Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
17
Добавлен:
28.06.2014
Размер:
4 Кб
Скачать
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