From f1b5d0749519de2c10d5419e93cdb886ee6b4243 Mon Sep 17 00:00:00 2001 From: Shivansh Srivastava <42182955+Shivansh2407@users.noreply.github.com> Date: Tue, 29 Jan 2019 16:03:31 +0530 Subject: [PATCH] Create StackUsingQueue --- StackUsingQueue | 85 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 StackUsingQueue 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