C语言链表遍历打印时出现无限循环问题求助
问题原因
你的代码构建出了环形链表,导致遍历过程中永远无法触发temp == NULL的终止条件,因此进入死循环。
具体错误点
你每次新建节点时都执行了newnode->next = head;操作:
- 第一个节点创建时
head为NULL,此时该逻辑没有问题 - 从第二个节点开始,新节点的
next指针被错误指向了头节点,再结合你尾插法的逻辑temp->next = newnode,最终会让最后一个节点永远指向头节点,整个链表首尾相连形成环
修复方案
把代码里的
newnode->next = head;
替换为
newnode->next = NULL;
即可。尾插法构建普通单链表时,新插入的尾节点的后继指针需要置空,才能让遍历逻辑正常识别到链表尾部。
内容的提问来源于stack exchange,提问作者im3dabasia
相关产品推荐
相关产品推荐

