Сортировка линейного списка при помощи алгоритма простого обмена - 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: логическое значение, которое указывает на то, что текущий элемент списка больше следующего.
Алгоритм сортировки работает следующим образом:
- Инициализируем переменную p с началом списка и переменную b с false.
- Запускаем цикл for, который выполняется до тех пор, пока j не станет равным n-1.
- Внутри цикла for инициализируем переменную s с текущим элементом списка, который следует за текущим элементом.
- Проверяем условие p^.info > s^.info. Если это условие истинно, то меняем значения элементов и продолжаем цикл.
- После выполнения обмена, обновляем значение переменной p, чтобы он указывал на следующий элемент списка.
- После завершения внутреннего цикла, обновляем значение переменной b, чтобы она указывала на то, что все элементы были отсортированы.
- Завершаем внешний цикл. Таким образом, данный код выполняет сортировку линейного списка при помощи алгоритма простого обмена.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д