Реферат: Двунаправленный динамический список

(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