Выполнить сортировку уже созданного списка - C (СИ)
Формулировка задачи:
Необходимо выполнить сортировку уже созданного списка.Я видно напортачила с указателями, так как, честно признаюсь, "плаваю" в них. Программа просто не хочет идти дальше одной строки.
Есть список:
Программа доходит до строки
и дальше ничего не делает.
Вот код функции сортировки по возрастанию:
Думаю напортачила в указателях, в наименовании функции....
Хотела объявить переменные в функции: а - соответствует текущему элементу структуры, b - последующему, видно не получилось, не понял меня компилятор .
Листинг программы
- {char name [15];
- int god;//год, по этому полю будет выполнятся сортировка по возрастанию
- struct spis *v1;//предыд элемент
- struct spis *v2;//послед элемент
- };
- void swap (struct spis *);
- struct spis * head, * tail;//указатели на голову и хвост
Листинг программы
- {while (a->god>b->god);
Листинг программы
- void swap (struct spis *p)
- {
- struct spis *a=NULL;
- struct spis *b=NULL;
- a=p;
- b=p->v2;
- if (a==b) return;
- if (b!=tail)
- [COLOR="Red"]{while (a->god>b->god); [/COLOR]// здесь виснет и все...
- {if (a==head)
- {b->v1=NULL;
- b->v2=a;
- a->v1=b;
- b=head;
- }
- else if (a==tail)
- {b->v1=tail;
- b->v2=NULL;
- a->v2=b;
- tail=b;
- }
- else
- {b->v1=a->v1;
- b->v2=a;
- a->v1->v2=b;
- a->v1=b;
- }
- a=a->v2;
- }
- }
- else if ((a==head)&&(b==tail))
- {b->v1=NULL;
- b->v2=a;
- a->v1=b;
- a->v2=NULL;
- b=head;
- a=tail;
- }
- else if (b==tail)
- {a->v1=tail;
- a->v2=NULL;
- b->v2=a;
- tail=a;
- }
- printf("\n ‘Отсортированный список\n");
- }
Решение задачи: «Выполнить сортировку уже созданного списка»
textual
Листинг программы
- /* Этот стиль практически не используется, но всё же его описание мне встречалось.
- Напоминает твой.
- В любом случае, его не стоит использовать, поскольку легко можно получиться, что визуально структура кода будет отличаться от реальной - тут сложно добавлять новые операторы в блоки и сложно искать ошибки. */
- void doit(int x)
- {
- if(x>123)
- {dosmth1();
- dosmth2();
- dosmth3();}
- else
- {dosmth4();
- dosmth5();
- dosmth6();}
- }
Объяснение кода листинга программы
В данном коде выполняется условная операция с использованием оператора if. Если значение переменной x больше 123, то выполняются функции dosmth1(), dosmth2() и dosmth3(). В противном случае, когда значение переменной x меньше или равно 123, выполняются функции dosmth4(), dosmth5() и dosmth6(). Предполагается, что эти функции уже определены в другом месте программы. Стили кодирования могут отличаться в зависимости от предпочтений программиста, но в данном случае использован стиль, который редко используется и который может вызвать сложности при добавлении новых операторов или поиске ошибок.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д