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