百木生 2020-10-26 13:01 采纳率: 50%
浏览 39
已采纳

一个数据结构链表的问题,想了很久,但还是觉得不对,求大神解答。

比如,一个单链表存储结构定义是

typedef struct LNode{
        ElemType  data;//数据域
        struct LNode  *next;//指针域
}LNode, *LinkList;

然后是它的遍历

p =L->next 和p = p->next

我的理解是:第一个是指针p是等于链表空节点的指针域,因为指针域是指向下一个结点,所以p是那个指针域里面的地址,所以指向了空结点的下一个结点,也就是第一个节点

//
//

问题来了,可能是个很蠢的问题,但我还是想问一下,指针p里面存的是地址,那链表是对这个指针的地址求它的指针域吗?不应该是对那个结点求他的指针域然后在存到指针里面,然后在找下一个吗。。。是我理解错了吗,求大神解答。
//
//

另外祝大家身体健康

  • 写回答

1条回答 默认 最新

  • abcfgh 2020-10-26 13:40
    关注

    链表都有一个头结点,head。head为所创建链表的地址;
    链表结构如下:
    head->node1->node2->node3->NULL;
    head只是一个指针,指向链表的第一个结点。没有数据域。

    `
    p =L->next
    //代表获取链表的第一个结点 node1。 L为链表的名字也就是链表的起始地址head

    //一般的遍历算法
    LNode * p=L; //L为链表的头,既p指向要遍历的链表。若为p=L->next;为直接获取链表中的第一个node

    while(p!=NULL)
    {
    //遍历下一个结点
    p=p->next;
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?