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

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

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

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

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

textual
Листинг программы
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 случайных элементов, печатается его содержимое, затем выполняется сортировка и снова печатается отсортированный список. В конце программы список освобождается от выделенных для него ресурсов.

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


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

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

8   голосов , оценка 3.625 из 5
Похожие ответы