Advertisement
Garey

Niki_SAA

Apr 3rd, 2018
472
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.30 KB | None | 0 0
  1. #include <iostream>
  2. #include <exception>
  3.  
  4. using namespace std;
  5.  
  6. template <typename T> class item {
  7.     template <typename> friend class stack;
  8. private:
  9.     T data;
  10.     item<T>* next;
  11. public:
  12.     item() : data(T()), next(nullptr) {}
  13.     item(T _data) : data(_data), next(nullptr) {}
  14.     item(T _data, item<T>* _next) : data(_data), next(_next) {}
  15. };
  16.  
  17. template <typename T> class stack {
  18. private:
  19.     item<T>* top;
  20. public:
  21.     stack() : top(nullptr) {}
  22.     ~stack() { while (!empty()) pop(); }
  23.  
  24.     bool empty() { return top == nullptr; }
  25.  
  26.     void push(T data) { top = new item<T>(data, top); }
  27.  
  28.     bool pop() {
  29.         if (empty()) {
  30.             throw exception();
  31.             return false;
  32.         }
  33.  
  34.         T data = top->data;
  35.  
  36.         item<T>* old = top;
  37.  
  38.         top = top->next;
  39.  
  40.         delete old;
  41.  
  42.         return true;
  43.     }
  44.  
  45.     T showtop() {
  46.         if (empty())
  47.             throw exception();
  48.  
  49.         return top->data;
  50.     }
  51.  
  52. };
  53.  
  54. int main() {
  55.     stack<int> s, s1;
  56.  
  57.     int A;
  58.     size_t count(0);
  59.  
  60.     for (int i = 1; i <= 10; i++)
  61.         s.push(i);
  62.  
  63.     cout << "Enter A: ";
  64.     cin >> A;
  65.  
  66.     while (!s.empty()) {
  67.         if (s.showtop() != A) {
  68.             s1.push(s.showtop());
  69.             s.pop();
  70.             count++;
  71.         }
  72.         else {
  73.             s.pop();
  74.             break;
  75.         }
  76.     }
  77.  
  78.     while (!s1.empty()) {
  79.         if (count != 1) {
  80.             cout << s1.showtop() << endl;
  81.             s1.pop();
  82.             count--;
  83.         }
  84.         else
  85.             s1.pop();
  86.     }
  87.  
  88.     return 0;
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement