【问题标题】:Getting signal sigsegv while sorting a linked list在对链表进行排序时获取信号 sigsegv
【发布时间】:2019-03-14 22:40:54
【问题描述】:

我正在尝试对链表进行排序,但在排序时出现此分段错误,尝试调试但无法找到问题。

这里是排序函数:

void Asort(struct lol **head_ref)
{
cout<<"Entered in asort function\n";
/// Sorting Asendingly
int temp1;  /// to store the temp value
struct lol* temp = *head_ref;
struct lol* next;
    while(temp!=NULL)
    {
        cout<<"Entered in while loop until null\n";
        next=temp->next;
        cout<<"log: " << next->element;


        if(temp->element > next->element && next!=NULL)
        {
                cout<<"Entered in If condition inside while loop\n";
                temp1=next->element;
                next->element=temp->element;
                temp->element=temp1;
        }
    temp=temp->next;
    }
    cout<<"Sorted Asending Successfully\n";
}

这是调用语句: 分类(*head)

【问题讨论】:

    标签: singly-linked-list segmentation-fault


    【解决方案1】:

    if(temp-&gt;element &gt; next-&gt;element &amp;&amp; next!=NULL)

    检查next 是否是NULL 没有意义你取消引用它之后:如果它是NULL,你已经死了。

    顺序很重要; next != NULL &amp;&amp; temp-&gt;element &gt; next-&gt;element 会更好。

    你在程序的其他地方也有类似的错误,例如

    next=temp->next;
    cout<<"log: " << next->element;  // will crash here if next==NULL
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-20
      • 2014-10-25
      • 1970-01-01
      • 2011-12-26
      • 1970-01-01
      • 2012-08-02
      相关资源
      最近更新 更多