Сформировать список из двух других по правилу - Turbo Pascal
Формулировка задачи:
Используя описание
список = ^ звено
звено = record
элемент: тип элемента
следующий список
end
Написать программу , которая формирует список L, включив в него по одному разу элементы, которые входят хотя бы в один из списков L1 и L2.
Решение задачи: «Сформировать список из двух других по правилу»
textual
Листинг программы
- type
- tList = ^tLink;
- tLink = record
- N : Real;
- X : tList;
- end;
- var
- L, L1, L2, Cur, T, S : tList;
- i : Integer;
- begin
- L1 := nil;
- L2 := nil;
- L := nil;
- Randomize;
- for i := 1 to 20 do
- begin
- New(Cur); Cur^.N := Random(19) - 9; Cur^.X := L1; L1 := Cur;
- end;
- for i := 1 to 20 do
- begin
- New(Cur); Cur^.N := Random(19) - 9; Cur^.X := L2; L2 := Cur;
- end;
- Write('L1 = '); Cur := L1; while Cur <> nil do begin Write(Cur^.N:3); Cur := Cur^.X; end; WriteLn;
- Write('L2 = '); Cur := L2; while Cur <> nil do begin Write(Cur^.N:3); Cur := Cur^.X; end; WriteLn;
- Cur := L1;
- while Cur <> nil do
- begin
- T := L; i := 0; while (T <> nil) and (i = 0) do if T^.N = Cur^.N then i := 1 else T := T^.X;
- if i = 0 then begin New(T); T^.N := Cur^.N; T^.X := nil; if L = nil then L := T else S^.X := T; S := T; end;
- Cur := Cur^.X;
- end;
- Cur := L2;
- while Cur <> nil do
- begin
- T := L; i := 0; while (T <> nil) and (i = 0) do if T^.N = Cur^.N then i := 1 else T := T^.X;
- if i = 0 then begin New(T); T^.N := Cur^.N; T^.X := nil; if L = nil then L := T else S^.X := T; S := T; end;
- Cur := Cur^.X;
- end;
- Write(' L = '); Cur := L; while Cur <> nil do begin Write(Cur^.N:3); Cur := Cur^.X; end; WriteLn;
- end.
Объяснение кода листинга программы
- Создается тип данных
tList
, который представляет собой указатель на структуруtLink
. В структуреtLink
есть два поля: целое числоN
и указатель на списокX
. - Создаются три переменные типа
tList
: L, L1 и L2. Изначально все они равны нулю. - Задается начальное значение для случайной генерации чисел от 1 до 19.
- Запускается цикл, который повторяется 20 раз. В каждой итерации цикла создается новый объект
tLink
и присваивается одной из переменных L, L1 или L2. ЗначениеN
в новом объекте генерируется случайным образом от 1 до 19. ЗначениеX
в новом объекте устанавливается равным значению переменной, которая была использована для создания нового объекта. - После завершения каждой итерации цикла, значения переменных L, L1 и L2 обновляются, чтобы отразить добавление нового объекта в список.
- В конце программы выводятся значения переменных L, L1 и L2.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д