排序链表时获取信号 sigsegv

Getting signal sigsegv while sorting a linked list

我正在尝试对链表进行排序,但我在排序时遇到了这个分段错误,尝试了 debuggig 但找不到问题。

这里是排序函数:

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";
}

调用语句如下: 分类(*头)

if(temp->element > next->element && next!=NULL)

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

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

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

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