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

链表指定位置插入新节点:代码运行无预期输出求助

代码错误分析与修复

你的链表插入节点逻辑存在错误,导致新节点未被正确添加到链表中,所以看不到插入的值8。

核心错误点

插入节点的代码段中,你错误地覆盖了新创建的节点指针,且没有建立正确的链表连接:

newnode=new Node();
cin>>newnode->data;
newnode=temp->next;  // 此处丢失了刚创建的新节点指针,造成内存泄漏
temp->next=newnode;  // 这行相当于把temp的next重新指向它原来的next,没有任何实际插入操作

修复后的插入代码

将插入部分的代码替换为以下正确逻辑:

else 
{
    temp=head;
    while(i<pos)
    {
        temp=temp->next;
        i++;
    }
    cout<<"Enter data you want to insert:";
    newnode=new Node();
    cin>>newnode->data;
    // 正确建立链表连接
    newnode->next = temp->next;  // 新节点指向temp原来的后继节点
    temp->next = newnode;        // temp的后继节点改为新节点
}

说明

修复后,当你在位置2插入值8时,原链表1->2->3->4->5会变成1->2->8->3->4->5,符合预期。如果你的需求是将新节点插入到位置2的前面(即1和2之间),则需要调整循环条件为i < pos-1,这样temp会定位到第1个节点,再执行插入操作。

内容的提问来源于stack exchange,提问作者Mudassir Waheed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 14:24:17