diff --git a/StackUsingQueue b/StackUsingQueue new file mode 100644 index 0000000..87e5332 --- /dev/null +++ b/StackUsingQueue @@ -0,0 +1,85 @@ +/* Program to implement a stack using +two queue */ +#include + +using namespace std; + +class Stack +{ + // Two inbuilt queues + queue q1, q2; + + // To maintain current number of + // elements + int curr_size; + + public: + Stack() + { + curr_size = 0; + } + + void push(int x) + { + curr_size++; + + // Push x first in empty q2 + q2.push(x); + + // Push all the remaining + // elements in q1 to q2. + while (!q1.empty()) + { + q2.push(q1.front()); + q1.pop(); + } + + // swap the names of two queues + queue q = q1; + q1 = q2; + q2 = q; + } + + void pop(){ + + // if no elements are there in q1 + if (q1.empty()) + return ; + q1.pop(); + curr_size--; + } + + int top() + { + if (q1.empty()) + return -1; + return q1.front(); + } + + int size() + { + return curr_size; + } +}; + +// driver code +int main() +{ + Stack s; + s.push(1); + s.push(2); + s.push(3); + + cout << "current size: " << s.size() + << endl; + cout << s.top() << endl; + s.pop(); + cout << s.top() << endl; + s.pop(); + cout << s.top() << endl; + + cout << "current size: " << s.size() + << endl; + return 0; +} +// This code is contributed by Chhavi