Сортировка динамического односвязного списка - C (СИ)
Формулировка задачи:
Здравствуйте.
Буду признателен за помощь в написании функции сортировки односвязного списка.
Вначале с клавиатуры вводятся целые числа и сохранаяются в списке. Далее этот список надо отсортировать по возростанию (или убыванию).
Вот программа (код Си) :
Буду признателен за содействие в написании функции
#include <stdio.h>
#include <stdlib.h>
typedef struct nd {
int val ; // element of list
struct nd *next ; // указывает на следующий узел списка
} ND ;
void print(ND *) ; // функция печати списка
int lenght(ND *) ; // функция вычисления длины списка
ND *Func_sort( ND *, int) ;функция сортировки списка - ее требуется написать!!!!
int main( void ) {
ND *first ; // указатель на начало списка
ND *r ;
int v ;
int lenght_list ; //длина списка
first = r = (ND*) malloc(sizeof(ND));
scanf("%d", &v); // ввод чисел с клавиатуры
r->val = v ;
while ( scanf("%d", &v)==1) { // ввод чисел с клавиатуры и сохранение в односвязном списке
r = r->next =(ND*) malloc(sizeof(ND)) ;
r->val = v ;
r->next = NULL ;
}
printf("\n%s", "List general: ") ;
print(first) ; // вывод созданного неупорядоченного списка
printf("\n%s%d", "Lenght of list: ", lenght_list = lenght(first)); // печать длины списка
return 0 ;
}
void print( ND * start) {
while (start!=NULL) {
printf("%d ", start->val);
start = start->next ;
}
return 0 ;
}
int lenght(ND *start) {
return (start) ? lenght(start->next)+1 : 0 ;
}ND *Func_sort( ND *, int){ }Решение задачи: «Сортировка динамического односвязного списка»
textual
Листинг программы
а можно спросить ссылки или источники