Решите пожайлуста задачу: Составить программу, которая формирует список L включая в него по одному разу элементы, которые входят одновременно в оба списка L1 и L2.
Идешь по элементам более короткого списка из L1 и L2. Берешь очередной элемент, если его нет в списке L и он есть во более длинном списке, добавляешь его в список L. Вот так на вскидку.
Будут конкретные вопросы по реализаци, спрашивай, а так поиск + http://forum.pascal.net.ru/index.php?showtopic=2706
Как составить процедуру, которая сравнивает элементы списков L1 и L2
Я бы реализовал список как объект, в котором был бы метод - функция, возвращающая true в случае если элемент value присутствует в списке. is_include(const value: Integer): Boolean;
Ну а реализация, запоминаем начало списка, далее идем по списку до тех пор пока не дойдем до конца либо пока не наткнемся на такой элемент, что head^.value = value. Если дошли до конца, то вернуть функция дожна false иначе true, ну и не забыть установить head на начало списка, (адрес мы запомнили в начале алгоритма)
вот примерно так.
program spiski;
uses crt;
type tinf=char; tp=^tel;
tel=record
inf:tinf;
psled:tp;
end;
var head, head1:tp; m,r:char; pe:tp; t,n:integer;
procedure vsp(var iel:tinf; var head:tp; n:integer);
var pe:tp; i:integer;
begin
for i:=1 to n do
begin
read(m);
new(pe);
pe^.inf:=iel;
pe^.psled:=head;
head:=pe;
end;
end;
procedure vibor(.....
while (head<>nil) and (head1<>nil) do begin
head^.inf= then
begin
clrscr;
writeln('n=');
readln(n);
writeln('t=');
readln(t);
writeln ('Vedite elementi spiska L1');
vsp(m,head,n);
writeln ('Vedite elementi spiska L2');
vsp(r,head1,t);
end.