Помогите, пожалуйста.
Поставлена задача отсортировать линейный список, состоящий из структуры
struct NODE
{
int num;
struct NODE * next, * prev;
}
примечание: синтаксис языка Си
void ListSort(struct NODE * first)
{
struct NODE *temp, *min, *search = first;
while(search != 0)
{
temp = search;
min = search;
while(temp != 0)
{
if(temp->num < min->num)
min = temp;
temp = temp->next;
}
temp = search->next;
if(search == first)
{
if(min == search->next)
{
first = min;
if(min->next != 0)
min->next->prev = search;
min->prev = 0;
search->prev = min;
search->next = min->next;
min->next = search;
}
else if(search != min)
{
first = min;
if(min->next != 0)
min->next->prev = min->prev;
search->next = min->next;
min->next = search;
min->prev = search->prev;
search->prev = min;
}
}
else if(min == search->next)
{
search->prev->next = min;
min->prev = search->prev;
if(min->next)
min->next->prev = search;
search->prev = min;
search->next = min->next;
min->next = search;
}
else if(search != min)
{
search->prev->next = min;
if(min->next)
min->next->prev = min->prev;
search->next = min->next;
min->next = search;
min->prev = search->prev;
search->prev = min;
}
search = temp;
}
}
теоретически должна работать, но практически не хочет
кто может посмотрите и попробуйте доработать, чтобы шло