打火鸡
2020-10-28 19:41
采纳率: 100%
浏览 43

C语言链表的疑问,向大佬请教

  • List create_first(void){
    int data;
    List head, p;
    head = (List)malloc(sizeof(LNode));
    head->next = NULL;
    for(int i = 0; i < 10; i++ ){
        scanf("%d",&data);
        p = (List)malloc(sizeof(LNode));
        p->data = data;
        p->next = head->next;
        head->next = p;
    }
    return head;
    }
    

    head的类型不是指向LNode的指针吗,既然是指针,为什么还有head->next呢?

  • 关于尾插法创建列表不太理解

图片说明

(从别的帖子里找的代码)

head指针从始至终不是都指向NULL吗?rear与p之间的赋值也不太明白

  • 好问题 提建议
  • 收藏

2条回答 默认 最新

  • 化屾为海 2020-10-29 01:06
    已采纳

    head->next = NULL;是将链表尾节点置空,当访问链表之head->next == NULL 时代表链表遍历完毕。head是指向链表的结点,不是一直指向NULL的。
    rear是指向链表的尾部,新建节点P与rear之间的赋值是从尾部插入节点。

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • catik 2020-10-28 21:45

    一开始head跟rear都指向同一个位置,循环的第一次rear->next 就相当于修改了head->next了

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题