Я пытаюсь отсортировать двусвязный список с помощью пузырьковой сортировки в C. Однако возвращаемый список — это тот же список, который я ввел. Пример [1,2,4,8,0,3] -> [1,2, 4,8,0,3]
void bublesort(slist_t *list){
list_item_t *curr = NULL;
curr = list->head;
if(curr == NULL){
printf("\nList is empty.");
}
while(curr->next != NULL && curr->value > curr->next->value){
curr = swap(curr, curr->next, list);
}
while(curr->prev != NULL){
if(curr->value < curr->prev->value){
bublesort(list);
}
}
}
list_item_t *swap(list_item_t *item1, list_item_t *item2, slist_t *list){
item1->next = item2->next;
item2->next = item1;
item2->prev = item1->prev;
item1->prev = item2;
if(item1 == list->head){
list->head = item2;
}
if(item2 == list->tail){
list->tail = item1;
}
return item2;
}
instanceList
, если вы не используете эту память. А также пишите комментарии к тому, что вы делаете. - person Rikayan Bandyopadhyay   schedule 13.02.2014