Написать программу сортировки существующего списка по алфавиту - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Написать программу сортировки существующего списка по алфавиту.

Решение задачи: «Написать программу сортировки существующего списка по алфавиту»

textual
Листинг программы
  1. type
  2.   plist=^node;
  3.   node=record
  4.     data: integer;
  5.     next:plist;
  6.   end;
  7.  
  8. // сортировка списка
  9. function insert_sort(l: plist): plist;
  10.  
  11.   function insert(a: plist; l: plist): plist;
  12.   begin
  13.     a^.next := nil;
  14.     if l = nil then insert := a
  15.     else
  16.       if a^.data < l^.data then begin
  17.         a^.next := l; insert := a;
  18.       end
  19.       else begin
  20.         l^.next := insert(a, l^.next);
  21.         insert := l;
  22.       end;
  23.   end;
  24.  
  25. begin
  26.   if l = nil then insert_sort := nil
  27.   else insert_sort := insert(l, insert_sort(l^.next));
  28. end;
  29.  
  30. // печать списка, для проверки
  31. procedure print(l : plist);
  32. begin
  33.   while l <> nil do
  34.   begin
  35.     write(l^.data:4);
  36.     l := l^.next;
  37.   end;
  38.   writeln;
  39. end;
  40.  
  41. var
  42.   L, tail, p : plist;
  43.   i : integer;
  44. begin
  45.   L := nil; tail := nil;
  46.   // создаем список из 10 случайных элементов
  47.   for i := 1 to 10 do
  48.   begin
  49.     new(p);
  50.     p^.data := random(20);
  51.     p^.next := nil;
  52.     if L = nil then L := p
  53.     else tail^.next := p;
  54.     tail := p;
  55.   end;
  56.  
  57.   print(L); // печатаем его
  58.   L := insert_sort(L); // сортируем
  59.   print(L); // и смотрим на результат
  60.  
  61.   // не забудь удалить список
  62. end.

Объяснение кода листинга программы

В данном коде используется алгоритм сортировки списка вставками. Список представлен как связный список, каждый элемент которого содержит целочисленное значение и ссылку на следующий элемент списка. Алгоритм сортировки выделяет один элемент (ключ) из списка, вставляет его в отсортированную часть списка и повторяет эту операцию до тех пор, пока весь список не будет отсортирован. Вложенная функция insert выполняет вставку элемента в отсортированную часть списка. Если элемент меньше текущего минимального элемента в отсортированной части списка, то он вставляется в начало этой части. В противном случае, функция рекурсивно вызывается для следующей половины списка. Функция insert_sort принимает список и возвращает отсортированный список. Если список пуст, то возвращается nil. В противном случае, функция вызывает insert для первого элемента списка и возвращает его. Процедура print выводит элементы списка на экран. Она проходит по всем элементам списка, начиная с первого, и выводит значение каждого элемента. В основной части кода создается список из 10 случайных элементов, печатается его содержимое, затем выполняется сортировка и снова печатается отсортированный список. В конце программы список освобождается от выделенных для него ресурсов.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.625 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы