Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
15
Добавлен:
28.06.2014
Размер:
3.6 Кб
Скачать
unit DynBilin;
interface

type
Info = record
ch: char;
end;
TBiList= ^S;
S = record
Inf: info; {‡­ зҐ­ЁҐ}
Next: TBiList; {‘«Ґ¤гойЁ© ®ЎкҐЄв}
pred: TBiList;
End;
Tbilin = record
start: tbilist;
end;

procedure ClearBiList(var List: TBiLin); {1) Џа®жҐ¤га  ®зЁйҐ­Ёп бЇЁбЄ }
function EmptyBiList(List: TBiLin): boolean; {2) ”г­ЄжЁп Їа®ўҐаЄЁ, Їгбв «Ё бЇЁб®Є?}
function BeginBiList(List: TBiLin) : TBiList; {3) ”г­ЄжЁп ў®§ўа й Ґв ЇҐаўл© н«Ґ¬Ґ­в бЇЁбЄ }
function SearchEndBiList(list: TBiLin): TBiList; {3) ”г­ЄжЁп ў®§ўа й Ґв Ї®б«Ґ¤­Ё© н«Ґ¬Ґ­в бЇЁбЄ }
function NextBiList(k: TBiList): TBiList; {4) Џа®жҐ¤га  ЇҐаҐе®¤  Є б«Ґ¤го饬г н«Ґ¬Ґ­вг}
function PredBiList(k: TBiList): TBiList; {4) Џа®жҐ¤га  ЇҐаҐе®¤  Є ЇаҐ¤л¤г饬г н«Ґ¬Ґ­вг}
procedure AddBedinBiList(var list: TBiLin; data: Info); {5.1) Џа®жҐ¤га  ¤®Ў ў«Ґ­Ёп н«Ґ¬Ґ­в  ў ­ з «® бЇЁбЄ }
procedure AddZentrumBiList(data: info; p: TBiList); {5.2) Џа®жҐ¤га  ¤®Ў ў«Ґ­Ёп н«Ґ¬Ґ­в  Ї®б«Ґ н«Ґ¬Ґ­в  p}
procedure AddEndBiList(var list: TBiLin; data: info); {5.3) Џа®жҐ¤га  ¤®Ў ў«Ґ­Ёп н«Ґ¬Ґ­в  ў Є®­Ґж бЇЁбЄ }
procedure GetBeginBiList(list: TBiLin; var k: info);
{6.1) Џа®жҐ¤га  ЇаЁбў Ёў Ґв ЇҐаҐ¬Ґ­­®© k Ё­д®а¬ жЁо Ё§ ЇҐаў®Ј® н«Ґ¬Ґ­в  бЇЁбЄ }
procedure GetEndBiList(list: TBiLin; k: info);
{6.3) Џа®жҐ¤га  ЇаЁбў Ёў Ґв ЇҐаҐ¬Ґ­­®© k Ё­д®а¬ жЁо Ё§ Ї®б«Ґ¤­ҐЈ® н«Ґ¬Ґ­в  бЇЁбЄ }
procedure DelBeginBiList(var List: TBiLin); {7.1) “¤ «Ґ­ЁҐ ЇҐаў®Ј® н«Ґ¬Ґ­в  бЇЁбЄ }
procedure DelNexTBiList(p: TBiList); {7.2) “¤ «Ґ­ЁҐ б«Ґ¤го饣® н«Ґ¬Ґ­в }
procedure DelEndBiList(list: TBiLin);{7.3) “¤ «Ґ­ЁҐ Ї®б«Ґ¤­ҐЈ® н«Ґ¬Ґ­в  бЇЁбЄ }

Implementation

procedure ClearBiList(var List: TBiLin);
var a: TBiList;
begin
while list.start <> nil do {Џ®Є  ­Ґ ¤®и«Ё ¤® Ї®б«Ґ¤­ҐЈ® н«Ґ¬Ґ­в ...}
Begin
a:=list.start;
list.start:=list.start^.next;
dispose(a);
end;
a:=nil;
end;

function EmptyBiList(List: TBiLin): boolean;
begin
emptyBiList:=List.start=nil; {True Ґб«Ё Їгбв, false - Ґб«Ё ­Ґ Їгбв}
end;

function BeginBiList(List: TBiLin) : TBiList;
begin
BeginBiList:=List.start;
end;

function SearchEndBiList(list: TBiLin): TBiList;
var last: tbilist;
Begin
last:=list.start;
while last^.next <> nil do last:=last^.next;
SearchEndBiList:=last;
last:=nil;
end;

function NextBiList(k: TBiList): TBiList;
Begin
NextBiList:=k^.next;
end;

function PredBiList(k: TBiList): TBiList;
Begin
PredBiList:=k^.pred;
end;

procedure AddBedinBiList(var list: TBiLin; data: Info);
var tmp: TBiList;
Begin
new(tmp);
tmp^.inf:=data;
tmp^.pred:=nil;
tmp^.next:=list.start;
list.start^.pred:=tmp;
list.start:=tmp;
tmp:=nil;
end;

procedure AddZentrumBiList(data: info; p: TBiList);
var tmp: TBiList;
Begin
new(tmp);
tmp^.inf:=data;
tmp^.next:=p^.next;
tmp^.next^.pred:=tmp;
p^.next:=tmp;
tmp^.pred:=p;
end;

procedure AddEndBiList(var list: TBiLin; data: info);
var buf: TBiList;
Begin
new(buf);
buf^.inf:=data;
buf^.next:=nil;
buf^.pred:=SearchEndBiList(list);
buf^.pred^.next:=buf;
buf:=nil;
end;

procedure GetBeginBiList(list: TBiLin; var k: info);
Begin
k:=list.start^.inf;
end;

procedure GetEndBiList(list: TBiLin; k: info);
Begin
k:=SearchEndBiList(list)^.inf;
end;

procedure DelBeginBiList(var List: TBiLin);
begin
List.start:=list.start^.next;
list.start^.pred:=nil;
end;

{“¤ «Ґ­ЁҐ б«Ґ¤го饣® н«Ґ¬Ґ­в }
procedure DelNexTBiList(p: TBiList);
Begin
p^.next:=p^.next^.next;
p^.next^.pred:=p;
end;

procedure DelEndBiList(list: TBiLin);
Begin
SearchEndBiList(list)^.pred^.next:=nil;
end;

end.
Соседние файлы в папке Laba10