thespeedracer38

Generic Stack using class template

Mar 18th, 2019
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.57 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3.  
  4. using namespace std;
  5.  
  6. template <class T, int cap = 1000>
  7. class Stack{
  8.     T *arr;
  9.     int top;
  10.     int size;
  11.     public:
  12.         Stack();
  13.         Stack(int);
  14.         ~Stack();
  15.         void push(T);
  16.         T pop();
  17. };
  18.  
  19. template <class T, int cap>
  20. inline Stack<T, cap>::Stack(){
  21.     size = cap;
  22.     top = -1;
  23.     arr = new T[size];
  24. }
  25.  
  26. template <class T, int cap>
  27. inline Stack<T, cap>::Stack(int size){
  28.     top = -1;
  29.     arr = new T[Stack::size = size];
  30. }
  31.  
  32. template <class T, int cap>
  33. inline Stack<T, cap>::~Stack(){
  34.     delete[] arr;
  35. }
  36.  
  37. template <class T, int cap>
  38. inline void Stack<T, cap>::push(T item){
  39.     if(top == size-1){
  40.         cout << "STACK OVERFLOW" << endl;
  41.     }
  42.     else{
  43.         top = top + 1;
  44.         arr[top] = item;
  45.     }
  46. }
  47.  
  48. template <class T, int cap>
  49. inline T Stack<T, cap>::pop(){
  50.     T ret = -1;
  51.     if(top == -1){
  52.         cout << "STACK UNDERFLOW" << endl;
  53.     }
  54.     else{
  55.         ret = arr[top];
  56.         top = top - 1;
  57.     }
  58.     return ret;
  59. }
  60.  
  61. int main() {
  62.     system("cls");
  63.     int size;
  64.     cout << "Enter the size of the stack: ";
  65.     cin >> size;
  66.     Stack<int> obj(size);
  67.     int choice;
  68.     do {
  69.         cout << "\n\nPress 1 to push an element\n";
  70.         cout << "Press 2 to pop an element\n";
  71.         cout << "Press 3 to quit\n";
  72.         cout << "Enter your choice: ";
  73.         cin >> choice;
  74.         int temp;
  75.         switch(choice){
  76.             case 1:
  77.                 cout << "Enter item: ";
  78.                 cin >> temp;
  79.                 obj.push(temp);
  80.                 break;
  81.             case 2:
  82.                 temp = obj.pop();
  83.                 if(temp != -1)
  84.                     cout << temp << " popped" << endl;
  85.                 break;
  86.             case 3:
  87.                 break;
  88.             default:
  89.                 cout << "Invalid choice" << endl;
  90.         }  
  91.     }while(choice != 3);
  92.     return 0;
  93. }
Add Comment
Please, Sign In to add comment