Реализация линейного списка и основных алгоритмов его обработки - PascalABC.NET
Формулировка задачи:
Написать программу формирования линейного однонаправленного списка, удаления элемента и вывода списка на печать.
Решение задачи: «Реализация линейного списка и основных алгоритмов его обработки»
textual
Листинг программы
type myList = class data : Integer; pred, next : myList; constructor (n : Integer; pred_ : myList); begin data := ReadLnInteger('Введите: ' + n + ' элемент ='); pred := pred_; end; procedure print(msg : String := ''); begin Write(msg); var Cur := Self; while Cur <> nil do begin Write(' ', Cur.data); Cur := Cur.next; end; WriteLn; end; end; function InputList : myList; begin Result := nil; var Last := Result; var n := ReadLnInteger('Количество элементов: n ='); for var i := 1 to n do if i = 1 then begin Result := New myList(i, nil); Last := Result; end else begin Last.next := New myList(i, Last); Last := Last.next; end; end; procedure deleteInList(val : Integer; var List : myList); begin if List.data = val then List := List.next else begin var Cur := List; while (Cur.next <> nil) and (Cur.next.data <> val) do Cur := Cur.next; if Cur.next = nil then Exit; Cur.next := Cur.next.next; end; end; begin var List := InputList; if List = nil then begin WriteLn('Список пуст.'); Halt; end; List.print('Исходный список: '); repeat deleteInList(ReadInteger('Значение для удаления:'), List); if List = nil then begin WriteLn('Список пуст.'); Halt; end; List.print('Новый список: '); until False; end.
Объяснение кода листинга программы
- Создание класса
myList
для представления элемента списка. - Реализация метода
print
для вывода элементов списка. - Реализация функции
InputList
для ввода списка из произвольного количества элементов. - Реализация процедуры
deleteInList
для удаления указанного элемента из списка. - Создание переменной
List
для хранения головы списка. - Цикл повторения, в котором происходит удаление элементов из списка и вывод нового списка до тех пор, пока список не станет пустым.
- Вывод сообщения о пустом списке и завершение работы программы при достижении условия выхода из цикла.