【问题标题】:segmentation fault while inserting node at specified position of singly linked list using c++使用c ++在单链表的指定位置插入节点时出现分段错误
【发布时间】:2016-09-30 17:01:49
【问题描述】:

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

}

【问题讨论】:

  • 如果要插入不在索引0处的元素,则必须在此之前为每个索引生成一个节点。

标签: c++ segmentation-fault position singly-linked-list


【解决方案1】:

没有Minimal, Complete, and Verifiable example 没有人能真正帮助你。然而,这在很大程度上突出了:

if(prev->next=NULL) {
    prev->next=temp;
}

您将NULL 分配给prev->next,而不是与== 进行比较。

【讨论】:

    【解决方案2】:

    我怀疑下面的代码:

    while(i!=position)
               {
               i++;
                prev=prev->next;
            }
    

    你应该像这样修改条件

    while(prev && i!=position)
    {
      i++;
      prev=prev->next;
    }
    

    【讨论】:

      猜你喜欢
      • 2021-05-04
      • 2015-02-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-21
      • 1970-01-01
      • 1970-01-01
      • 2020-04-01
      • 1970-01-01
      相关资源
      最近更新 更多