排序链表时获取信号 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
我正在尝试对链表进行排序,但我在排序时遇到了这个分段错误,尝试了 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