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