当我在第 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;
}