链表指定位置插入新节点:代码运行无预期输出求助
代码错误分析与修复
你的链表插入节点逻辑存在错误,导致新节点未被正确添加到链表中,所以看不到插入的值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
相关产品推荐
相关产品推荐

