使用 C++ 在单向链表的指定位置插入节点时出现分段错误

segmentation fault while inserting node at specified position of singly linked list using c++

本文关键字:节点 插入 错误 分段 位置 定位 C++ 链表 使用      更新时间:2023-10-16

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