Проблемы с сортировкой связанного списка в порядке возрастания (получение ошибки по умолчанию) с использованием пузырьковой сортировки в c - PullRequest
0 голосов
/ 26 марта 2020

В настоящее время я работаю над проектом по моему курсу программирования c, где мы должны взять значения из текстового файла и поместить их в связанный список. Структура имеет 2 списка, один в том порядке, в котором он был введен, показан как следующий, а второй в порядке возрастания, показанный как сортировка. Я выбираю пузырьковую сортировку, чтобы поместить значения в порядке возрастания. Моя структура для связанного списка показана ниже.

typedef struct NODE {
    int value;
    double key;
    struct NODE *next;
    struct NODE *sort;
}sortedList;

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

while ( checkAscending(headSort) == 1 ){

      bubbleSort(headSort);
} 

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

void bubbleSort(sortedList *headSort ) { 
  sortedList *prev = headSort; 
  while(headSort != NULL && headSort->sort != NULL){ 
    if (headSort->key > headSort->sort->key){  
      /*swaps the two nodes*/
      sortedList *temp = headSort ;  
      prev->sort = headSort->sort ;
      headSort->sort = headSort->sort->sort;
      prev->sort->sort = temp;
    }
    prev = headSort; 
    headSort = headSort->sort; 
  } 
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...