
Код
program rabota;
type spis = ^el;
el = record
next:spis;
data : integer;
back : spis;
end;
procedure sozdat_spisok ( var nach, konc : spis );
var g : spis;
x : integer;
begin { sozdat_spisok }
nach := nil;
konc := nil;
writeln('Sozdaem spisok, vvedite celye 4isla.');
writeln('Hotite zakon4it - voodite 0.');
readln ( x );
while x <> 0 do
begin
if nach = nil
then
begin
new( g );
g^.data := x;
g^.next := nil;
g^.back := nil;
nach := g;
konc := g;
readln( x );
end
else
begin
new( g );
g^.data := x;
g^.next := nil;
g^.back := konc;
konc^.pnext:=g;
konc := g;
readln( x );
end
end;
writeln('Spisok uspe6no sozdan');
end; { Sozdat spisok }
procedure pe4atat( nach : spis );
var p : spis;
begin { pe4atat }
writeln('pe4ataem spisok:' );
p := nach;
while p <> nil do
begin
write( p^.data, ' ');
p := p^.next;
end;
writeln;
end; { pe4atat }
procedure uni4tozhit( var nach, konc : spis );
var s : spis;
begin { uni4tozhit }
writeln('uni4tozhaem spisok s konca.');
while pr <> nil do
begin
s := nach;
if konc <> nach
then
begin
while (s^.next <> konc) and (nach<>konc) do
s := s^.next;
writeln(' uni4tozhaem ', s^.next^.data);
konc := s;
dispose( s^.next );
end
else
begin
writeln(' Ui4tozhaem 1-j: ', s^.data);
dispose( s );
nach := nil;
konc := nil;
end;
end;
end; { uni4tozhit }
var na4alo, konec : spis;
begin
sozdat_spisok ( na4alo, konec );
pe4atat ( na4alo );
uni4tozhit(na4alo,konec);
end.
type spis = ^el;
el = record
next:spis;
data : integer;
back : spis;
end;
procedure sozdat_spisok ( var nach, konc : spis );
var g : spis;
x : integer;
begin { sozdat_spisok }
nach := nil;
konc := nil;
writeln('Sozdaem spisok, vvedite celye 4isla.');
writeln('Hotite zakon4it - voodite 0.');
readln ( x );
while x <> 0 do
begin
if nach = nil
then
begin
new( g );
g^.data := x;
g^.next := nil;
g^.back := nil;
nach := g;
konc := g;
readln( x );
end
else
begin
new( g );
g^.data := x;
g^.next := nil;
g^.back := konc;
konc^.pnext:=g;
konc := g;
readln( x );
end
end;
writeln('Spisok uspe6no sozdan');
end; { Sozdat spisok }
procedure pe4atat( nach : spis );
var p : spis;
begin { pe4atat }
writeln('pe4ataem spisok:' );
p := nach;
while p <> nil do
begin
write( p^.data, ' ');
p := p^.next;
end;
writeln;
end; { pe4atat }
procedure uni4tozhit( var nach, konc : spis );
var s : spis;
begin { uni4tozhit }
writeln('uni4tozhaem spisok s konca.');
while pr <> nil do
begin
s := nach;
if konc <> nach
then
begin
while (s^.next <> konc) and (nach<>konc) do
s := s^.next;
writeln(' uni4tozhaem ', s^.next^.data);
konc := s;
dispose( s^.next );
end
else
begin
writeln(' Ui4tozhaem 1-j: ', s^.data);
dispose( s );
nach := nil;
konc := nil;
end;
end;
end; { uni4tozhit }
var na4alo, konec : spis;
begin
sozdat_spisok ( na4alo, konec );
pe4atat ( na4alo );
uni4tozhit(na4alo,konec);
end.