PROCEDURE Create(VAR stack: Stack);
BEGIN
NEW(stack); stack.top := NIL; stack.length := 0;
END Create;
PROCEDURE AddElement(stack: Stack; element: Element);
VAR
node: LinkedNode;
BEGIN
NEW(node); node.element := element;
node.next := stack.top; stack.top := node;
INC(stack.length);
END AddElement;
PROCEDURE RemoveElement(stack: Stack);
BEGIN
ASSERT(stack.length > 0);
stack.top := stack.top.next;
END RemoveElement;
PROCEDURE GetCurrentElement(stack: Stack;
VAR element: Element);
BEGIN
ASSERT(stack.length > 0);
element := stack.top.element;
END GetCurrentElement;
PROCEDURE Length(stack: Stack) : INTEGER;
BEGIN
RETURN stack.length
END Length;
|