使用 C++ 在单向链表的指定位置插入节点时出现分段错误
segmentation fault while inserting node at specified position of singly linked list using c++
当我在第 0 个位置插入节点时效果很好,但当我在中间的某个地方插入时则不然。我已经将指针保留在 prev 遍历到目标位置的上一个节点,并且我还检查了该节点是否要插入尾部位置。我不知道为什么它会给出分段错误.谁能帮我解决这个问题?代码是:
Node* InsertNth(Node *head, int data, int position)
{
Node * temp=new Node;
int i=1;
temp->data=data;
temp->next=NULL;
Node * prev;
if(position==0)
{if(head==NULL)
head=temp;
else
{
temp->next=head;
head=temp;
}
}
else
{
prev=head;
while(i!=position)
{
i++;
prev=prev->next;
}
if(prev->next=NULL)
{
prev->next=temp;
}
else
{
temp->next=prev->next;
prev->next=temp;
}
}
return head;
}
如果没有一个最小、完整和可验证的例子,没有人能真正帮助你。然而,这在很大程度上突出了:
if(prev->next=NULL) {
prev->next=temp;
}
您将NULL
分配给prev->next
,而不是将其与==
进行比较。
我怀疑下面的代码:
while(i!=position)
{
i++;
prev=prev->next;
}
你应该像这样修改条件
while(prev && i!=position)
{
i++;
prev=prev->next;
}
相关文章:
- C++17 - 使用自定义分配器的节点提取/重新插入 - 适用于 clang++/libc++,但不适用于 libstd
- 将二叉树的节点插入链表 (C++)
- 如何在使用 ItemType 的模板类时将新节点插入二叉树 c++.(我是 c++ 的新手)
- 单个链表,节点插入最低到最高节点值的问题
- 无法将节点插入C 中的链接列表中
- 将节点插入链表只会转到开头或结尾
- 将节点插入 BST
- 按排序顺序将节点插入链表
- LinkedList节点插入
- 二进制搜索树节点插入
- 使用级别顺序遍历将节点插入二叉树
- 尝试将节点插入链表中,但我需要一个重载运算符<函数
- 将节点插入二叉搜索树
- 尝试将节点插入矢量<node>,但程序在push_back时不断崩溃
- 将节点插入二进制搜索树/链表
- 将节点插入到不带头指针的排序列表中
- 错误:SList.cpp:(.text+0x69):尝试将节点插入链表头C++时未定义对"SLNode::SLNode()"的引用
- 为什么在尝试将新节点插入列表时出错
- 节点插入二进制树C++
- 为什么我不能将 head 之后的节点插入C++链表?