Добавил:
Tushkan
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы / Laba10 / deq
.pas unit DynDeq;
interface
type
Info = record
ch: char;
end;
PTDeqItem = ^s;
s = Record
Data: Info;
next, pred: PTDeqItem;
End;
TDeq = Record
pStart, pFinish: PTDeqItem;
End;
Procedure DestroyDeq(Var Deq: TDeq); {1) ЋзЁбвЁвм ¤ҐЄ}
Function EmptyDeq(Var Deq: TDeq): Boolean; {2) Џгбв «Ё ¤ҐЄ?}
Procedure AddStartDeq(Var Deq: TDeq; data: Info); {3) „®Ў ўЁвм н«Ґ¬Ґв ў з «® ¤ҐЄ }
Procedure AddEndDeq(Var Deq: TDeq; data: Info); {3) „®Ў ўЁвм н«Ґ¬Ґв ў Є®Ґж ¤ҐЄ }
procedure GetStartDeq(Var Deq: TDeq; var k: info); {4) ‚Ґагвм з «® ¤ҐЄ }
procedure getFinishDeq(Var Deq: TDeq; var k: info); {4) ‚Ґагвм Є®Ґж ¤ҐЄ }
procedure DeleteStartDeq(Var Deq: TDeq); {5) “¤ «Ёвм з «® ¤ҐЄ }
function MemoryControl: boolean; {6) …бвм «Ё бў®Ў®¤ п Ї ¬пвм}
implementation
Procedure DestroyDeq(Var Deq: TDeq);
var k: info;
Begin
While Deq.pStart<>nil Do deq.pstart:=deq.pstart^.next;
deq.pfinish:=nil;
End;
Function EmptyDeq(Var Deq: TDeq): Boolean;
Begin
EmptyDeq := (Deq.pStart = nil) and (Deq.pFinish = nil);
End;
Procedure AddStartDeq(Var Deq: TDeq; data: Info);
Var u: PTDeqItem;
Begin
new(u);
u^.next := Deq.pStart;
u^.Data := data;
u^.pred:=nil;
Deq.pStart^.pred := u;
Deq.pStart := u;
u:=nil;
End;
Procedure AddEndDeq(Var Deq: TDeq; data: Info);
Var u: PTDeqItem;
Begin
new(u);
u^.next := nil;
u^.pred := Deq.pFinish;
u^.Data := data;
Deq.pFinish^.next := u;
Deq.pFinish := u;
u:=nil;
End;
procedure GetStartDeq(Var Deq: TDeq; var k: info);
Begin
k:=Deq.pstart^.data;
End;
procedure getFinishDeq(Var Deq: TDeq; var k: info);
begin
k:=Deq.pfinish^.data;
End;
procedure DeleteStartDeq(Var Deq: TDeq);
begin
Deq.pstart:=Deq.pstart^.next;
end;
function MemoryControl: boolean;
begin
MemoryControl:=MaxAvail >= SizeOf(PTDeqItem);
end;
End.
interface
type
Info = record
ch: char;
end;
PTDeqItem = ^s;
s = Record
Data: Info;
next, pred: PTDeqItem;
End;
TDeq = Record
pStart, pFinish: PTDeqItem;
End;
Procedure DestroyDeq(Var Deq: TDeq); {1) ЋзЁбвЁвм ¤ҐЄ}
Function EmptyDeq(Var Deq: TDeq): Boolean; {2) Џгбв «Ё ¤ҐЄ?}
Procedure AddStartDeq(Var Deq: TDeq; data: Info); {3) „®Ў ўЁвм н«Ґ¬Ґв ў з «® ¤ҐЄ }
Procedure AddEndDeq(Var Deq: TDeq; data: Info); {3) „®Ў ўЁвм н«Ґ¬Ґв ў Є®Ґж ¤ҐЄ }
procedure GetStartDeq(Var Deq: TDeq; var k: info); {4) ‚Ґагвм з «® ¤ҐЄ }
procedure getFinishDeq(Var Deq: TDeq; var k: info); {4) ‚Ґагвм Є®Ґж ¤ҐЄ }
procedure DeleteStartDeq(Var Deq: TDeq); {5) “¤ «Ёвм з «® ¤ҐЄ }
function MemoryControl: boolean; {6) …бвм «Ё бў®Ў®¤ п Ї ¬пвм}
implementation
Procedure DestroyDeq(Var Deq: TDeq);
var k: info;
Begin
While Deq.pStart<>nil Do deq.pstart:=deq.pstart^.next;
deq.pfinish:=nil;
End;
Function EmptyDeq(Var Deq: TDeq): Boolean;
Begin
EmptyDeq := (Deq.pStart = nil) and (Deq.pFinish = nil);
End;
Procedure AddStartDeq(Var Deq: TDeq; data: Info);
Var u: PTDeqItem;
Begin
new(u);
u^.next := Deq.pStart;
u^.Data := data;
u^.pred:=nil;
Deq.pStart^.pred := u;
Deq.pStart := u;
u:=nil;
End;
Procedure AddEndDeq(Var Deq: TDeq; data: Info);
Var u: PTDeqItem;
Begin
new(u);
u^.next := nil;
u^.pred := Deq.pFinish;
u^.Data := data;
Deq.pFinish^.next := u;
Deq.pFinish := u;
u:=nil;
End;
procedure GetStartDeq(Var Deq: TDeq; var k: info);
Begin
k:=Deq.pstart^.data;
End;
procedure getFinishDeq(Var Deq: TDeq; var k: info);
begin
k:=Deq.pfinish^.data;
End;
procedure DeleteStartDeq(Var Deq: TDeq);
begin
Deq.pstart:=Deq.pstart^.next;
end;
function MemoryControl: boolean;
begin
MemoryControl:=MaxAvail >= SizeOf(PTDeqItem);
end;
End.