g_twice.mod 476 B

123456789101112131415161718
  1. GENERIC IMPLEMENTATION MODULE GTwice;
  2. PROCEDURE Init (VAR s : Stack);
  3. BEGIN s.top := NIL; s.depth := 0 END Init;
  4. PROCEDURE Push (VAR s : Stack; v : T);
  5. VAR n : Node;
  6. BEGIN NEW(n); n^.val := v; n^.next := s.top;
  7. s.top := n; s.depth := s.depth + 1
  8. END Push;
  9. PROCEDURE Pop (VAR s : Stack; VAR v : T) : BOOLEAN;
  10. VAR n : Node;
  11. BEGIN
  12. IF s.top = NIL THEN RETURN FALSE END;
  13. n := s.top; v := n^.val; s.top := n^.next;
  14. s.depth := s.depth - 1; RETURN TRUE
  15. END Pop;
  16. END GTwice.