Реферат: Двунаправленный динамический список
begin
m:=true;
{0}while m=true do
begin
m:=false;
temp:=first;
while temp^.next<>nil do
begin{1}
if (temp^.fam>temp^.next^.fam) or
(temp^.fam=temp^.next^.fam) and
(temp^.name>temp^.next^.name) or
(temp^.fam=temp^.next^.fam) and
(temp^.name=temp^.next^.name) and
(temp^.fanem=temp^.next^.fanem) then
begin{2}
m:=true;
if temp=first then
first:=temp^.next
else temp^.prev^.next:=temp^.next;
if temp^.next=cut then
begin
cut:=temp;
tmp:=nil;
end
else begin{3}
temp^.next^.next^.prev:=temp;
tmp:=temp^.next^.next;
end;{3}
temp^.next^.next:=temp;