Сортировка вставками линейного односвязного списка
Это структура
struct Node{
long int field;
char* ctr;
struct Node* next;
};
struct List{
struct Node* main;
int size;
};
на вход подаются итераторы, указывающие на начало и на конец. итератор next - указывает на следующую ноду. Это сама сортировка:
void sort(ListIterator begin, ListIterator end){
if(begin){
struct Node* current = begin->next;
begin->next = NULL;
while (current){
if (current->field < begin->field){
struct Node* tmp = current;
current = next(current);
tmp->next = begin;
begin = tmp;
}
else{
struct Node* first = begin;
while (first->next && !(current->field < first->next->field)){
first = next(first);
}
struct Node* tmp = current;
current = current->next;
tmp->next = first->next;
first->next = tmp;
}
}
}
else{
printf("empty \n");
}
}
не работает, когда в списке всего два элемента. помогите, пожалуйста