Проверка равенства списков - Pascal

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

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

Создать 2 списка из N элементов.С помощью функции проверить на равенство L1 и L2.

Решение задачи: «Проверка равенства списков»

textual
Листинг программы
type
  tList = ^rList;
  rList = record
    N : Integer;
    X : tList;
  end;
  
function InputList(msg : String; N : Integer) : tList;
var
  First, Last, Tmp : tList;
  i : Integer;
begin
  First := nil;
  WriteLn(msg);
  for i := 1 to N do
    begin
      Write(i, ' элемент = ');
      New(Tmp); ReadLn(Tmp^.N);
      if First = nil then
        First := Tmp
      else
        Last^.X := Tmp;
      Last := Tmp;
    end;
  Last^.X := nil;
  InputList := First;
end;
 
function Compare(L1, L2 : tList) : Boolean;
begin
  while (L1 <> nil) and (L2 <> nil) and (L1^.N = L2^.N) do
    begin L1 := L1^.X; L2 := L2^.X; end;
  Compare := (L1 = nil) and (L2 = nil);
end;
 
var
  L1, L2 : tList;
  N : Integer;
begin
  Write('N = '); ReadLn(N);
  L1 := InputList('первый список', N);
  L2 := InputList('второй список', N);
  WriteLn('Списки равны = ', Compare(L1, L2));
end.

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

  1. Объявление пользовательского типа данных:
    • Название типа: tList - указатель на структуру.
    • Структура: rList - с полями N (целое число) и X (указатель на tList).
  2. Функция InputList:
    • Аргументы: msg (строка) - сообщение для пользователя, N (целое число) - количество элементов в списке.
    • Переменные: First, Last, Tmp (указатели на tList), i (целое число).
    • Объявляется указатель First как nil (пустой указатель).
    • Выводится сообщение msg.
    • В цикле от 1 до N выполняется:
      • Выводится сообщение с номером элемента.
      • Создается новый элемент списка Tmp и вводится значение N для него.
      • Если First равен nil, то First указывает на Tmp, иначе Last ссылается на Tmp.
      • Last указывает на Tmp.
    • У последнего элемента списка поле X указывает на nil.
    • Возвращается указатель First.
  3. Функция Compare:
    • Аргументы: L1, L2 (указатели на tList) - сравниваемые списки.
    • В цикле, пока L1 и L2 не равны nil, и значения полей N равны, указатели смещаются на следующий элемент списка.
    • Результатом будет булево значение, определяющее равенство списков.
  4. В главной части программы:
    • Объявляются переменные L1, L2 (указатели на tList) и N (целое число).
    • Вводится количество элементов N.
    • Вызывается функция InputList для первого и второго списков L1, L2.
    • Выводится результат сравнения списков.

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


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

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

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