home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_12_01 / allison / stack2.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-12-07  |  871 b   |  64 lines

  1. // stack2.h: A C++ stack class template
  2.  
  3. #include <stddef.h>
  4.  
  5. template<class T>
  6. class Stack
  7. {
  8.     size_t size;
  9.     T *data;
  10.     int ptr;
  11.  
  12. public:
  13.     Stack(size_t);
  14.     ~Stack();
  15.     void push(const T&);
  16.     T pop();
  17.     int empty() const;
  18.     int full() const;
  19. };
  20.  
  21. template<class T>
  22. inline Stack<T>::Stack(size_t siz)
  23. {
  24.     data = new T[size = siz];
  25.     ptr = 0;
  26. }
  27.  
  28. template<class T>
  29. inline Stack<T>::~Stack()
  30. {
  31.     delete [] data;
  32. }
  33.  
  34. template<class T>
  35. void Stack<T>::push(const T& x)
  36. {
  37.     if (ptr < size)
  38.         data[ptr++] = x;
  39. }
  40.  
  41. template<class T>
  42. T Stack<T>::pop()
  43. {
  44.     if (ptr > 0)
  45.         --ptr;
  46.     return data[ptr];
  47. }
  48.  
  49. template<class T>
  50. inline int Stack<T>::empty() const
  51. {
  52.     return ptr == 0;
  53. }
  54.  
  55. template<class T>
  56. inline int Stack<T>::full() const
  57. {
  58.  
  59.     return ptr == size;
  60. }
  61.  
  62. // End of File
  63.  
  64.