Сортировка односвязного списка - C (СИ) (78410)
Формулировка задачи:
Всем доброго времени суток!
Пишу курсавик по программированию, всё написал, осталась только одна функция уже голову всю сломал, никак не придумаю как же её реализовать , может вы чем сможите мне помочь, буду очень благодарен!
Нужно всего лишь отсортировать односвязный список:
Правда необходимо выполнить две сортировки:
1) По фамилии и имени(можно просто по фамилии) в алфавитном порядке.
2) По дате рождения.
Записей около 45...
Листинг программы
- struct account
- {
- int visual;
- int number;
- char name[9];
- char surname[12];
- char nickname[9];
- char hometown[11];
- char residence[12];
- int birthday;
- int month;
- int year;
- char phone[12];
- struct account *nextPtr;
- }
Решение задачи: «Сортировка односвязного списка»
textual
Листинг программы
- void swap(struct account** plist, int pos_a, int pos_b) {
- int tmp;
- struct account* first = *plist;
- struct account* last = *plist;
- while( pos_a-- )
- first = first->nextPtr;
- if(first == NULL)
- return;
- while( pos_b-- )
- last = last->nextPtr;
- if(last == NULL)
- return;
- tmp = first->visual;
- first->visual = last->visual;
- last->visual = tmp;
- // здесь перестановку делай также как в сортировке
- // для каждого элемента структуры
- // дело в том что указатель это адрес а память физически выделяется для того чтобы
- // сменить данные под этот указатель нужно данные переместить в тот указатель с копировать
- // без манипуляции стека не обойтись
- }
- int length(const struct account* plist) {
- int len = 0;
- for(; plist != NULL ;len++, plist = plist->nextPtr);
- return len;
- }
- void main(void) {
- size = length(list); // получить размер списка
- // обменять последнее значение с серединным
- swap(&list, size - 1, size >> 1);
- }
Объяснение кода листинга программы
void swap(struct account** plist, int pos_a, int pos_b)
- функция для обмена элементов в односвязном списке.int length(const struct account* plist)
- функция для определения длины списка.void main(void)
- точка входа в программу. Вычисляется размер списка, и выполняется обмен элементов в списке.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д