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

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

procedure ClearLinList(var List: TLin); {1) Џа®жҐ¤га  ®зЁйҐ­Ёп бЇЁбЄ }
function EmptyLinList(List: TLin): boolean; {2) ”г­ЄжЁп Їа®ўҐаЄЁ, Їгбв «Ё бЇЁб®Є?}
function BeginLinList(List: TLin) : tLinList; {3) ”г­ЄжЁп ў®§ўа й Ґв ЇҐаўл© н«Ґ¬Ґ­в бЇЁбЄ }
function NextLinlist(k: TLinList): TLinList; {4) Џа®жҐ¤га  ЇҐаҐе®¤  Є б«Ґ¤го饬г н«Ґ¬Ґ­вг}
procedure AddBedinLinList(var list: TLin; data: Info);{5.1) Џа®жҐ¤га  ¤®Ў ў«Ґ­Ёп н«Ґ¬Ґ­в  ў ­ з «® бЇЁбЄ }
procedure AddZentrumLinList(data: info; p: TLinList); {5.2) Џа®жҐ¤га  ¤®Ў ў«Ґ­Ёп н«Ґ¬Ґ­в  Ї®б«Ґ н«Ґ¬Ґ­в  p}
procedure AddEndLinList(var list: TLin; data: info); {5.3) Џа®жҐ¤га  ¤®Ў ў«Ґ­Ёп н«Ґ¬Ґ­в  ў Є®­Ґж бЇЁбЄ }
procedure GetBeginLinList(list: TLin; var k: info); {6.1) ЏаЁбў Ёў ­ЁҐ ЇҐаҐ¬Ґ­­®© ¤ ­­лҐ ЇҐаў®Ј® н«Ґ¬Ґ­в  бЇЁбЄ }
procedure GetZentrumLinList(p: TLinList; var k: info); {6.2) ЏаЁбў Ёў ­ЁҐ ЇҐаҐ¬Ґ­­®© ¤ ­­лҐ бҐаҐ¤Ё­л бЇЁбЄ }
procedure GetEndLinList(list: TLin; var k: info); {6.3) ЏаЁбў Ёў Ґв ЇҐаҐ¬Ґ­­®© ¤ ­­ле Ё§ Ї®б«Ґ¤­ҐЈ® н«Ґ¬Ґ­в  бЇЁбЄ }
procedure DelBeginLinList(var List: TLin); {7.1) “¤ «Ґ­ЁҐ ЇҐаў®Ј® н«Ґ¬Ґ­в  бЇЁбЄ }
procedure DelNextLinList(p: TLinList); {7.2) “¤ «Ґ­ЁҐ б«Ґ¤го饣® н«Ґ¬Ґ­в }
procedure DelEndLinList(var list: TLin); {7.3) “¤ «Ґ­ЁҐ Ї®б«Ґ¤­ҐЈ® н«Ґ¬Ґ­в  бЇЁбЄ }

Implementation

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

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

function BeginLinList(List: TLin) : tLinList;
begin
	BeginLinList:=List.start;
end;

function NextLinlist(k: TLinList): TLinList;
Begin
	NextLinList:=k^.next;
end;

procedure AddBedinLinList(var list: TLin; data: Info);
var tmp: TLinList;
Begin
	new(tmp);
	tmp^.inf:=data;
	tmp^.next:=list.start;
	list.start:=tmp;
end;

procedure AddZentrumLinList(data: info; p: TLinList);
var tmp: tlinlist;
Begin
	new(tmp);
	tmp^.inf:=data;
	tmp^.next:=p^.next;
	p^.next:=tmp;
end;

procedure AddEndLinList(var list: TLin; data: info);
var buf, last: TLinList;
Begin
	new(buf);
	buf^.inf:=data;
	last:=list.start;
	while last^.next <> nil do last:=last^.next;
	last^.next:=buf;
	buf^.next:=nil;
	last:=nil;
end;

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

procedure GetZentrumLinList(p: TLinList; var k: info);
Begin
	k:=p^.inf;
end;

procedure GetEndLinList(list: TLin; var k: info);
var last:tlinlist;
Begin
	last:=list.start;
	while last^.next <> nil do last:=last^.next;
	k:=last^.inf;
end;

procedure DelBeginLinList(var List: TLin);
var tmp: TLinList;
begin
	tmp:=List.start;
	List.start:=list.start^.next;
	dispose(tmp);
	tmp:=nil;
end;

procedure DelNextLinList(p: TLinList);
var buf: tlinlist;
	Begin
		buf:=p^.next;
		p^.next:=p^.next^.next;
		dispose(buf);
		buf:=nil;
	end;

procedure DelEndLinList(var list: TLin);
var buf, last:tlinlist;
Begin
	last:=list.start;
	while last^.next^.next <> nil do last:=last^.next;
	buf:=last^.next;
	last^.next:=nil;
	dispose(buf);
	buf:=nil;
end;

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