Сортировка линейного списка при помощи алгоритма простого обмена - Pascal

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

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

"Используя представление последовательности чисел в виде линейного списка, напишите программу, сортировки этой последовательности при помощи алгоритма простого обмена." Сделал код, но выдает ошибку в строке 46. Помогите пожалуйста. Заранее спасибо!
program yoho;
uses crt;
const n=10;
type spisok=^element;
    element=record
    info:integer;
    next:spisok;
    end;
var l,s,p:spisok;
   i,j:integer;
procedure sort(p:spisok; j,i : integer);
var
  chg:integer;
  b:boolean;
begin
    for j:=1 to n-1 do begin
    p:=l;
    for i:=1 to n-j do begin
           b:=false;
           s:=p^.next;
           if p^.info>s^.info then b:=true;
           if b then
      begin
           chg:=p^.info;
           p^.info:=s^.info;
           s^.info:=chg;
      end;
      p:=p^.next;
      end;
      end;
end;
begin
clrscr;
{Заполнение списка}
for i:=1 to n-1 do begin
new(p);
readln(p^.info);
p^.next:=s;
s:=p;
end;
new(p);
readln(p^.info);
p^.next:=s;
l:=p;
{Сортировка списка и как раз здесь ошибка возникает}
sort(p);
{Вывод списка}
while p<>nil do begin
write(p^.info:5);
p:=p^.next;
end;
readln;
end.

Решение задачи: «Сортировка линейного списка при помощи алгоритма простого обмена»

textual
Листинг программы
procedure sort(var p:spisok);
var
  i,j,chg:integer;
  b:boolean;
begin
    for j:=1 to n-1 do begin
    p:=l;
    for i:=1 to n-j do begin
           b:=false;
           s:=p^.next;
           if p^.info>s^.info then b:=true;
           if b then
      begin
           chg:=p^.info;
           p^.info:=s^.info;
           s^.info:=chg;
      end;
      p:=p^.next;
      end;
      end;
end;

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

Данный код представляет собой реализацию алгоритма сортировки линейного списка при помощи алгоритма простого обмена. В данном коде используются следующие переменные:

  • p: ссылка на начало списка, который нужно отсортировать.
  • n: количество элементов в списке.
  • j: переменная для итерации по элементам списка.
  • i: переменная для итерации по элементам списка.
  • chg: переменная для хранения временного значения, которое будет использоваться для обмена элементов.
  • b: логическое значение, которое указывает на то, что текущий элемент списка больше следующего. Алгоритм сортировки работает следующим образом:
    1. Инициализируем переменную p с началом списка и переменную b с false.
    2. Запускаем цикл for, который выполняется до тех пор, пока j не станет равным n-1.
    3. Внутри цикла for инициализируем переменную s с текущим элементом списка, который следует за текущим элементом.
    4. Проверяем условие p^.info > s^.info. Если это условие истинно, то меняем значения элементов и продолжаем цикл.
    5. После выполнения обмена, обновляем значение переменной p, чтобы он указывал на следующий элемент списка.
    6. После завершения внутреннего цикла, обновляем значение переменной b, чтобы она указывала на то, что все элементы были отсортированы.
    7. Завершаем внешний цикл. Таким образом, данный код выполняет сортировку линейного списка при помощи алгоритма простого обмена.

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


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

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

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