Pascal. Динамические списки
Добрый вечер. Никак не получается выполнить вставку в список L за первым вхождением элемента Е все элементы списка L1, если Е входит в список L. Буду благодарен за помощь.
Код:
Uses crt;
type tinf=integer;
uk=^rec;
rec=record
x:integer;
adr:uk;
end;
Var first, p1, p2, p3, l, q:uk;
f:text;
procedure SOZD_SPIS ;
begin
assign(f,'dinspis.txt');
reset(f);
first:=nil;
while not seekeof(f) do begin
new(p1); read(f,p1^.x);
if first=nil then first:=p1
else p2^.adr:=p1;
p2:=p1;
end;
p2^.adr:=nil;
close(f);
end;
Procedure VIVOD(t:string) ;
begin
writeln(t);
p1:=first;
while p1<>nil do begin
write (p1^.x, ' ');
p1:=p1^.adr;
end;
writeln;
end;
procedure AddElem(var spis1:uk;znach1:tinf);
var
p,t:uk;
begin
new(t);
t^.x := znach1;
p:=spis1;
if (p = nil) or (p^.adr = nil) then
begin
t^.adr:=spis1;
spis1:=t;
end
else
begin
while p^.adr^.adr <> nil do p:=p^.adr;
t^.adr := p^.adr;
p^.adr := t;
end;
end;
Begin
SOZD_SPIS;
VIVOD('исходн');
l:=nil;
addelem(l, 1);
q:=l;
while q<>nil do
begin
write(q^.x:4);
q:=q^.adr;
end;
writeln;
readln;
VIVOD('после вставки');
readkey;
End.
|