Проверка равенства списков - 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.
Объяснение кода листинга программы
- Объявление пользовательского типа данных:
- Название типа:
tList- указатель на структуру. - Структура:
rList- с полямиN(целое число) иX(указатель на tList).
- Название типа:
- Функция
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.
- Аргументы:
- Функция
Compare:- Аргументы:
L1,L2(указатели на tList) - сравниваемые списки. - В цикле, пока
L1иL2не равны nil, и значения полейNравны, указатели смещаются на следующий элемент списка. - Результатом будет булево значение, определяющее равенство списков.
- Аргументы:
- В главной части программы:
- Объявляются переменные
L1,L2(указатели на tList) иN(целое число). - Вводится количество элементов
N. - Вызывается функция
InputListдля первого и второго списковL1,L2. - Выводится результат сравнения списков.
- Объявляются переменные