Implementierung von Stacks

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]

Stacks.om
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;

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]
Copyright © 1999 Andreas Borchert, in HTML konvertiert am 29.06.1999