Сортировка линейного списка при помощи алгоритма простого обмена - 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, чтобы она указывала на то, что все элементы были отсортированы.
- Завершаем внешний цикл. Таким образом, данный код выполняет сортировку линейного списка при помощи алгоритма простого обмена.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д