我正在尝试对链表进行排序,但是在排序时遇到了分段错误,尝试了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";
}
此处正在调用语句: Asort(* head)
答案 0 :(得分:0)
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