Проверка равенства списков - 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
. - Выводится результат сравнения списков.
- Объявляются переменные
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д