Реализация линейного списка и основных алгоритмов его обработки - 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.

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

  1. Создание класса myList для представления элемента списка.
  2. Реализация метода print для вывода элементов списка.
  3. Реализация функции InputList для ввода списка из произвольного количества элементов.
  4. Реализация процедуры deleteInList для удаления указанного элемента из списка.
  5. Создание переменной List для хранения головы списка.
  6. Цикл повторения, в котором происходит удаление элементов из списка и вывод нового списка до тех пор, пока список не станет пустым.
  7. Вывод сообщения о пустом списке и завершение работы программы при достижении условия выхода из цикла.

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

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