showcase24stack.mod 556 B

123456789101112131415161718192021222324252627
  1. GENERIC IMPLEMENTATION MODULE GStack;
  2. PROCEDURE Init(VAR s : Stack);
  3. BEGIN
  4. s.top := NIL; s.depth := 0
  5. END Init;
  6. PROCEDURE Push(VAR s : Stack; v : T);
  7. VAR n : Node;
  8. BEGIN
  9. NEW(n); n^.val := v; n^.next := s.top; s.top := n;
  10. s.depth := s.depth + 1
  11. END Push;
  12. PROCEDURE Pop(VAR s : Stack; VAR v : T) : BOOLEAN;
  13. VAR n : Node;
  14. BEGIN
  15. IF s.top = NIL THEN RETURN FALSE END;
  16. n := s.top; v := n^.val; s.top := n^.next;
  17. s.depth := s.depth - 1;
  18. RETURN TRUE
  19. END Pop;
  20. PROCEDURE Depth(VAR s : Stack) : INTEGER;
  21. BEGIN
  22. RETURN s.depth
  23. END Depth;
  24. END GStack.