Реферат: Двунаправленный динамический список
(ffanem<>temp^.fanem)) and (temp<>nil) do
temp:=temp^.next;
{2}if temp=nil then
begin
write('Такого нет');
readln;
end
else
begin{else2}
{3}if first<>cut then
{4}if temp^.prev=nil then
begin
temp^.next^.prev:=temp^.prev;
first:=temp^.next;
end
else{4}
{5}if temp^.next=nil then
begin
temp^.prev^.next:=temp^.next;
cut:=temp^.prev;
end
else begin{else5}
temp^.prev^.next:=temp^.next;
temp^.next^.prev:=temp^.prev;
end{else5}
else {3} first:=nil;
dispose(temp);
end;{else2}
end;{else1}
end;{procedure}
Procedure Prosm;
begin
ClrScr;
temp:=first;
writeln('Фамилия Имя Отчество':27, 'Дата рождения':27,'Знак зодиака':20);
write('________________________________________________________________');
if first<>nil then
begin
while temp<>nil do
begin
n:=length(temp^.fam)+length(temp^.name)+length(temp^.fanem);
writeln(temp^.fam,' ',temp^.name,' ',temp^.fanem,
temp^.bethday:55-n,temp^.zodiak:15);
temp:=temp^.next;
end;
end
else writeln('Таблица пуста':40);
readln;
end;
Procedure Sortir;
var
tmp:ukazat;
begin
ClrScr;
if first<>nil then
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;
temp^.next^.prev:=temp^.prev;
temp^.prev:=temp^.next;
temp^.next:=tmp;
end{2}
else temp:=temp^.next;
end;{1}
m:=false;
temp:=cut;
while temp^.prev<>nil do
begin{2.1}
if (temp^.fam
(temp^.fam=temp^.prev^.fam) and
(temp^.name
(temp^.fam=temp^.prev^.fam) and
(temp^.name=temp^.prev^.name) and
(temp^.fanem
begin{2.2}
m:=true;
if temp=cut then cut:=temp^.prev
else temp^.next^.prev:=temp^.prev;
if temp^.prev=first then
begin
first:=temp;
tmp:=nil;
end
else
begin{2.3}
temp^.prev^.prev^.next:=temp;
tmp:=temp^.prev^.prev;
end;{2.3}
temp^.prev^.prev:=temp;
temp^.prev^.next:=temp^.next;
temp^.next:=temp^.prev;
temp^.prev:=tmp;
end{2.2}
else temp:=temp^.prev;
end;{2.1}
end;{0} end else
begin
writeln('Таблица
пуста');
readln; end; end; begin first:=nil; repeat ClrScr; writeln('Выберите
действие:'); writeln('1-Добавить'); writeln('2-Удалить'); writeln('3-Просмотреть'); writeln('4-Сортировать'); writeln('0-Выход'); readln(ch); case
ch of '1':Dobav; '2':Udal; '3':Prosm; '4':Sortir; end; until
ch='0'; end. Казанский
Государственный
Технический
Университет
им. А.Н.
Туполева
Курсовая
работа по дисциплине:
Алгоритмические
языки и программирование.
Тема: “Двунаправленный
динамический
список “.
Выполнил:
******** *.*.
Проверил:
Каф. ПМИ
******** *.*.
Оценка:
отлично
Казань
2001
студент
гр.****
Ст. преподаватель