You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

迭代反转链表函数异常求助:调用后仅打印原链表首元素

问题分析与解决
  • 核心问题:反转完成后未更新全局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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 12:05:28