#1 07.02.06 01:00
Сортировка односвязного списка на С
Помогите, pls. Я уже глючу, наверное - не могу написать сортировку.
Значит так. Дана структура:
Код: cpp:
struct TERM_LIST{ char Termin[30]; //Слово struct TERM_LIST *next; //struct TERM_LIST *prev; этот элемент лучше не использовать, //хотя если понадобится, то можно включить };
В список заносим слова. Теперь список надо отсортировать так, чтобы эти слова располагались в алфавитном порядке. Возможны любые виды сортировок. В особенности, хотелось бы посмотреть на сортировку пузырьком.
P.S.:увидеть решение этой проблемы как можно скорее, а то скоро уже с ума сойду :D . Все это под Винду.
Offline
#2 07.02.06 18:55
Re: Сортировка односвязного списка на С
вот что думает по этому поводу Романов Е.Л.
http://ermak.cs.nstu.ru/cprog/book2001/306-02.htm#def32
Код: cpp:
//------------------------------------------------------306-07.cpp //--- Сортировка односвязного списка вставками list *sort(list *ph) // функция возвращает заголовок нового списка { list *q, *out, *p , *pr; out = NULL; // выходной список пуст while (ph !=NULL) // пока не пуст входной список { q = ph; ph = ph->next; // исключить очередной // поиск места включения for ( p=out,pr=NULL; p!=NULL && q->val>p->val; pr=p,p=p->next); if (pr==NULL) / / включение перед первым { q->next=out; out=q; } else // иначе после предыдущего { q->next=p; pr->next=q; } } return out; }
только нужно заменить условие
q->val > p->val
на
strcmp(q->Termin, p->Termin) >0 или <0, в зависимости от типа сортировки (по возрастанию или убыванию)
Offline

