[Back to TURTLE SWAG index] [Back to Main SWAG index] [Original]
(* ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ Programated by Vladimir Zahoransky ³
³ Vladko software ³
³ Contact : zahoran@cezap.ii.fmph.uniba.sk ³
³ Program tema : Unit - define dynamical Ostack ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ *)
{ This program just modify Ostack.pas. This program work absolutly
universal. This program can work with general item. Principe is
DDS (dynamical data structure) and work with poiters. Last 'record'
prvok is at the present Component, which define general item. It
is easy to undestand.
}
Unit DynStack;
Interface
Const maxstack=100;
Type Component=Record p:pointer;
dl:word;
End;
Stack=Object
st: Array[1..maxstack] of Component;
vrch: 0..maxstack;
Procedure init;
Function full:boolean;
Function empty:boolean;
Procedure push(Var v;d:word);
Procedure pop(Var v);
End;
Implementation
Procedure Error(s:string); {Chyba = error}
Begin
writeln(s);
halt;
End;
Procedure Stack.init;
Begin
vrch:=0;
End;
Function Stack.full:boolean;
Begin
full:=vrch=maxstack
End;
Function Stack.empty:boolean;
Begin
Empty:=vrch=0
End;
Procedure Stack.push(Var v;d:word);
Begin
if full Then Error('Full stack!')
Else
Begin
inc(vrch);
With st[vrch] do Begin
Dl:=d;
Getmem(p,dl);
Move(v,p^,dl);
End;
End
End;
Procedure Stack.pop(Var v);
Begin
if empty Then Error('Empty stack')
Else
Begin
With St[vrch] do Begin
Move(p^,v,dl);
Freemem(p,dl);
End;
Dec(vrch);
End
End;
End.
[Back to TURTLE SWAG index] [Back to Main SWAG index] [Original]