genus.w
上传用户:gzelex
上传日期:2007-01-07
资源大小:707k
文件大小:2k
开发平台:

MultiPlatform

  1. documentstyle[11pt,comments]{cweb}
  2. textwidth=6.5in
  3. textheight=9in
  4. oddsidemargin=0in
  5. topmargin=0in
  6. input /LEDA/SRC/man/MANUAL.mac
  7. begin{document}
  8. @ stack:
  9. @c
  10. #ifndef LEDA_STACK_H
  11. #define LEDA_STACK_H
  12. #include <LEDA/basic.h>
  13. #include <LEDA/impl/slist.h>
  14. /*{manual\
  15. section {Stacks (stack) } label {Stacks}
  16. definition
  17. decl stack E
  18. An instance $S$ of the parameterized data type name is 
  19. a sequence of elements of data type $E$, called the element 
  20. type of $S$. Insertions or deletions of elements take place only at one end of 
  21. the sequence, called the top of $S$. The size of $S$ is the length of the 
  22. sequence, a stack of size zero is called the empty stack.
  23. }*/
  24. template<class E>
  25. class _CLASSTYPE stack : private SLIST
  26. {
  27.   void copy_el(GenPtr& x)  const { x=Copy(ACCESS(E,x)); }
  28.   void clear_el(GenPtr& x) const { Clear(ACCESS_REF(E,x)); }
  29. public:
  30. /*{manual\
  31. creation
  32. create S { }   
  33. creates an instance var of type name. var is initialized with the empty 
  34. stack.
  35. operations 2 4
  36. }*/
  37.   stack() {}
  38.   stack(const stack<E>& S) : SLIST(S) {}
  39.  ~stack() { clear(); }
  40.   stack<E>& operator=(const stack<E>& S) 
  41.                      { return (stack<E>&)SLIST::operator=(S); }
  42.   E top()   const { return ACCESS(E,SLIST::head());}
  43. /*{manual\
  44. op E       top   { }  
  45.                        {returns the top element of var.\
  46.                         precond $S$ is not empty.}
  47. }*/
  48. void push(E x)  { SLIST::push(Copy(x)); }
  49. /*{manual\
  50. op void push  {E x}  
  51.                        {adds $x$ as new top element to var.}
  52. }*/
  53. E pop()         { E x=top(); SLIST::pop(); return x; }
  54. /*{manual\
  55. op E    pop   { }  
  56.                        {deletes and returns the top element of var.\
  57.                        precond $S$ is not empty.}
  58. }*/
  59. int  size()  const { return SLIST::length(); }
  60. /*{manual\
  61. op int  size  { }  
  62.                        {returns the size of var.}
  63. }*/
  64. int  empty() const { return SLIST::empty(); }
  65. /*{manual\
  66. op bool empty { }  
  67.                        {returns true if var is empty, false otherwise.}
  68. }*/
  69. void clear()       { SLIST::clear(); }
  70. /*{manual\
  71. op void clear { }  
  72.                        {makes var the empty stack.}
  73. }*/
  74. };
  75. #endif
  76. @
  77. end {document}