迭代反转链表函数异常求助:调用后仅打印原链表首元素
问题分析与解决
核心问题:反转完成后未更新全局
head指针
你的迭代反转逻辑本身是正确的,但循环结束后,原head仍然指向原链表的第一个节点——这个节点在反转后next被设为NULL,所以调用display时只能打印这一个节点。而真正的反转后链表头是循环结束时的prev指针(它指向原链表的最后一个节点)。修改后的代码:
void reversing_list_iteration() { struct Node *prev,*current,*next; prev = NULL; current = head; // head - global variable next = NULL; while(current!=NULL) { next = current->next; current->next = prev; //traversing prev = current; current = next; } // 新增:更新全局head为反转后的头节点 head = prev; }
- 验证逻辑:
循环结束时,current会变成NULL,prev刚好停在原链表的最后一个节点,也就是反转后的第一个节点。将head指向它,后续display就能遍历整个反转后的链表了。
内容的提问来源于stack exchange,提问作者vinay sharma kv
相关产品推荐
相关产品推荐

