Advertisement
Guest User

Untitled

a guest
Nov 19th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.71 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. template <typename T>
  4. class Stack1 {
  5. private:
  6.     T * stackPtr;
  7.     const int size;
  8.     int top;
  9. public:
  10.     Stack1(int n);
  11.     Stack1(const Stack1<T>&);
  12.     ~Stack1();
  13.  
  14.     inline void push(const T &);
  15.     inline T pop();
  16.     inline const T &peek(int) const;
  17.     inline void stackout();
  18.     inline void pol_out();
  19.  
  20.     inline int get_size() const;
  21.     inline int get_top() const;
  22.     inline T *get_Ptr() const;
  23. };
  24.  
  25. template <typename T>
  26. Stack1<T>::Stack1(int SizeSt) : size(SizeSt) {
  27.     stackPtr = new T[size];
  28.     top = 0;
  29. }
  30.  
  31. template <typename T>
  32. Stack1<T>::Stack1(const Stack1<T>& Stack2) :size(Stack2.get_size()) {
  33.     stackPtr = new T[size];
  34.     top = Stack2.get_top();
  35.     for (int ix = 0; ix < top; ix++)
  36.         stackPtr[ix] = Stack2.getPtr()[ix];
  37. }
  38.  
  39. template <typename T>
  40. Stack1<T>::~Stack1() {
  41.     delete[] stackPtr;
  42. }
  43.  
  44. template <typename T>
  45. inline void Stack1<T>::push(const T& value) {
  46.     if (top < size) stackPtr[top++] = value;
  47. }
  48.  
  49. template <typename T>
  50. inline T Stack1<T>::pop() {
  51.     if (top > 0) stackPtr[--top];
  52.     return NULL;
  53. }
  54.  
  55. template <typename T>
  56. inline const T &Stack1<T>::peek(int num) const {
  57.     if (num <= top)  return stackPtr[top - num];
  58. }
  59.  
  60. template <typename T>
  61. inline void Stack1<T>::stackout() {
  62.     for (int ix = 0; ix < top - 1; ix++)
  63.         cout << stackPtr[ix] << ", ";
  64.     cout << stackPtr[top - 1] << endl;
  65. }
  66.  
  67. template <typename T>
  68. inline void Stack1<T>::pol_out() {
  69.     for (int ix = 0; ix <= top - 1; ix++)
  70.         cout << stackPtr[ix] << "  ";
  71.     cout << endl;
  72. }
  73.  
  74. template <typename T>
  75. inline int Stack1<T>::get_size() const {
  76.     return size;
  77. }
  78.  
  79. template <typename T>
  80. inline int Stack1<T>::get_top() const {
  81.     return top;
  82. }
  83.  
  84. template <typename T>
  85. inline T*Stack1<T>::get_Ptr() const {
  86.     terurn stackPtr;
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement