Получение сигнала sigsegv при сортировке связанного списка - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь отсортировать связанный список, но я получаю эту ошибку сегментации во время сортировки, пробовал отладку, но не могу найти проблему, хотя.

вот функция сортировки:

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

Вот вызывающее заявление: Асорт (* голова)

1 Ответ

0 голосов
/ 10 октября 2018

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
...