Проблема в том что программа сравнивает только последние элементы списков L1 и L2
Вот листинг=>
Код
Program SPISKI;
USES CRT;
Type spisok=^zveno;
zveno = record
Elem:integer;
Next:spisok;
end;
var L,P:spisok;
L1,L2:spisok;
x,z: integer;
n,s: integer;
i: integer;
Procedure AddSpisok(var Top:Spisok; k:integer);{процедура добавления элемента в список}
var NewTop:Spisok;
begin
New(NewTop);
NewTop^.Elem:=k;
NewTop^.Next:=Top;
Top:=NewTop;
end;
Procedure Print(Top:spisok);{печать списка}
begin
while Top<>nil do
begin
writeln(Top^.Elem);
Top:=Top^.Next; end;
writeln; end;
Function Otsev (TOP:spisok; j:integer ):boolean;
var P:spisok;
begin
Otsev:=False;
P:=TOP;
while P<>nil do
if P^.Elem=j then Otsev:=True;
end;
begin
clrscr;
L1:=Nil;
write('BBEDITE KOLICHESTBO ELEMENTOV SPISKA L1: '); readln(n);
for i:=1 to n do begin read(x);
AddSpisok(L1,x); end;
L2:=Nil;
write('BBEDITE KOLICHESTBO ELEMENTOV SPISKA L2: '); readln(s);
for i:=1 to s do begin read(z);
AddSpisok(L2,z); end;
Begin
P:=L1;
while P<>nil do
if P^.Elem<>L2^.Elem then AddSpisok(L,P^.elem); end;
Begin
P:=L2;
while P<>nil do
if P^.Elem<>L1^.Elem then AddSpisok(L,P^.elem); end;
writeln('SPISOK L => ');
Print(L);
writeln('PRESS ANY KEY');
READKEY;
end.
USES CRT;
Type spisok=^zveno;
zveno = record
Elem:integer;
Next:spisok;
end;
var L,P:spisok;
L1,L2:spisok;
x,z: integer;
n,s: integer;
i: integer;
Procedure AddSpisok(var Top:Spisok; k:integer);{процедура добавления элемента в список}
var NewTop:Spisok;
begin
New(NewTop);
NewTop^.Elem:=k;
NewTop^.Next:=Top;
Top:=NewTop;
end;
Procedure Print(Top:spisok);{печать списка}
begin
while Top<>nil do
begin
writeln(Top^.Elem);
Top:=Top^.Next; end;
writeln; end;
Function Otsev (TOP:spisok; j:integer ):boolean;
var P:spisok;
begin
Otsev:=False;
P:=TOP;
while P<>nil do
if P^.Elem=j then Otsev:=True;
end;
begin
clrscr;
L1:=Nil;
write('BBEDITE KOLICHESTBO ELEMENTOV SPISKA L1: '); readln(n);
for i:=1 to n do begin read(x);
AddSpisok(L1,x); end;
L2:=Nil;
write('BBEDITE KOLICHESTBO ELEMENTOV SPISKA L2: '); readln(s);
for i:=1 to s do begin read(z);
AddSpisok(L2,z); end;
Begin
P:=L1;
while P<>nil do
if P^.Elem<>L2^.Elem then AddSpisok(L,P^.elem); end;
Begin
P:=L2;
while P<>nil do
if P^.Elem<>L1^.Elem then AddSpisok(L,P^.elem); end;
writeln('SPISOK L => ');
Print(L);
writeln('PRESS ANY KEY');
READKEY;
end.