Написать программу сортировки существующего списка по алфавиту - Free Pascal
Формулировка задачи:
Решение задачи: «Написать программу сортировки существующего списка по алфавиту»
type plist=^node; node=record data: integer; next:plist; end; // сортировка списка function insert_sort(l: plist): plist; function insert(a: plist; l: plist): plist; begin a^.next := nil; if l = nil then insert := a else if a^.data < l^.data then begin a^.next := l; insert := a; end else begin l^.next := insert(a, l^.next); insert := l; end; end; begin if l = nil then insert_sort := nil else insert_sort := insert(l, insert_sort(l^.next)); end; // печать списка, для проверки procedure print(l : plist); begin while l <> nil do begin write(l^.data:4); l := l^.next; end; writeln; end; var L, tail, p : plist; i : integer; begin L := nil; tail := nil; // создаем список из 10 случайных элементов for i := 1 to 10 do begin new(p); p^.data := random(20); p^.next := nil; if L = nil then L := p else tail^.next := p; tail := p; end; print(L); // печатаем его L := insert_sort(L); // сортируем print(L); // и смотрим на результат // не забудь удалить список end.
Объяснение кода листинга программы
В данном коде используется алгоритм сортировки списка вставками.
Список представлен как связный список, каждый элемент которого содержит целочисленное значение и ссылку на следующий элемент списка.
Алгоритм сортировки выделяет один элемент (ключ) из списка, вставляет его в отсортированную часть списка и повторяет эту операцию до тех пор, пока весь список не будет отсортирован.
Вложенная функция insert
выполняет вставку элемента в отсортированную часть списка. Если элемент меньше текущего минимального элемента в отсортированной части списка, то он вставляется в начало этой части. В противном случае, функция рекурсивно вызывается для следующей половины списка.
Функция insert_sort
принимает список и возвращает отсортированный список. Если список пуст, то возвращается nil
. В противном случае, функция вызывает insert
для первого элемента списка и возвращает его.
Процедура print
выводит элементы списка на экран. Она проходит по всем элементам списка, начиная с первого, и выводит значение каждого элемента.
В основной части кода создается список из 10 случайных элементов, печатается его содержимое, затем выполняется сортировка и снова печатается отсортированный список.
В конце программы список освобождается от выделенных для него ресурсов.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д