Добавил:
Tushkan
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы / Laba10 / BiLin
.pas 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.
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.