Сортировка двухсвязного списка
Нужно оформить сортировку двухсвязного списка, я сделала определенную функцию, но она ничего не сортирует или выбивает с ошибкой. Как сделать сортировку по буквам?
Вот моя структура:
struct spis
{
char name[45];
float sc;
float cnt;
double sq;
struct spis *v1; // v1 – указатель на предыдущую структуру
struct spis *v2;
};
Вот еще две глобальные структуры:
struct spis *head, *tail;
Вот функция для сортировки, которую я не доделала до конца:
void sort(spis *p) {
spis *pn,*tmp;
if (p = head) {
pn = p->v2;
while (p != NULL) {
if (strcmp(pn->name, p->name) > 0) {
tmp = p;
p = pn;
pn = tmp;
}
p = p->v2;
pn = pn->v2;
}
}
}