diff --git a/Queue Using Stacks/Queue Using Stacks - Costly Dequeue.cpp b/Queue Using Stacks/Queue Using Stacks - Costly Dequeue.cpp new file mode 100644 index 0000000..e797fbf --- /dev/null +++ b/Queue Using Stacks/Queue Using Stacks - Costly Dequeue.cpp @@ -0,0 +1,44 @@ +#include +using namespace std; + +struct Queue { + stack s1, s2; + + void enQueue(int x) + { + s1.push(x); + } + + int deQueue() + { + if (s1.empty() && s2.empty()) { + cout << "Q is empty"; + exit(0); + } + + if (s2.empty()) { + while (!s1.empty()) { + s2.push(s1.top()); + s1.pop(); + } + } + + int x = s2.top(); + s2.pop(); + return x; + } +}; + +int main() +{ + Queue q; + q.enQueue(1); + q.enQueue(2); + q.enQueue(3); + + cout << q.deQueue() << '\n'; + cout << q.deQueue() << '\n'; + cout << q.deQueue() << '\n'; + + return 0; +} \ No newline at end of file diff --git a/Queue Using Stacks/Queue Using Stacks - Costly Enqueue.cpp b/Queue Using Stacks/Queue Using Stacks - Costly Enqueue.cpp new file mode 100644 index 0000000..1d56013 --- /dev/null +++ b/Queue Using Stacks/Queue Using Stacks - Costly Enqueue.cpp @@ -0,0 +1,47 @@ +#include +using namespace std; + +struct Queue { + stack s1, s2; + + void enQueue(int x) + { + while (!s1.empty()) { + s2.push(s1.top()); + s1.pop(); + } + + s1.push(x); + + while (!s2.empty()) { + s1.push(s2.top()); + s2.pop(); + } + } + + int deQueue() + { + if (s1.empty()) { + cout << "Q is Empty"; + exit(0); + } + + int x = s1.top(); + s1.pop(); + return x; + } +}; + +int main() +{ + Queue q; + q.enQueue(1); + q.enQueue(2); + q.enQueue(3); + + cout << q.deQueue() << '\n'; + cout << q.deQueue() << '\n'; + cout << q.deQueue() << '\n'; + + return 0; +} \ No newline at end of file