

- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
C++ Program to Implement Queue Using Two Stacks
Stack
The stack which is implemented as LIFO, where insertion and deletion are done from the same end, top. The last element that entered is deleted first.
Stack operations are −
- push (int data) − Insertion at top
- int pop() − Deletion from top
Queue
The queue which is implemented as FIFO where insertions are done at one end (rear) and deletions are done from another end (front). The first element that entered is deleted first.
Queue operations are −
- EnQueue (int data) − Insertion at rear end
- int DeQueue() − Deletion from front end
This is a C++ Program to Implement Queue Using Two Stacks.
Description of functions
- function enQueue() to enqueue an item to queue:
- Push m to s1.
- function deQueue() to dequeue items from queue.
- If both the stacks empty then print queue is empty.
- If s2 is empty then move elements from s1 to s2.
- Pop the elements from s2 and return it.
- function push() to push item in the stack.
- function pop() to pop out an item from the stack.
Example Code
#include<stdlib.h> #include<iostream> using namespace std; struct nod//node declaration { int d; struct nod *n; }; void push(struct nod** top_ref, int n_d);//functions prototypes. int pop(struct nod** top_ref); struct queue { struct nod *s1; struct nod *s2; }; void enQueue(struct queue *q, int m) { push(&q->s1, m); } int deQueue(struct queue *q) { int m; if (q->s1 == NULL && q->s2 == NULL) { cout << "Queue is empty"; exit(0); } if (q->s2 == NULL) { while (q->s1 != NULL) { m = pop(&q->s1); push(&q->s2, m); } } m = pop(&q->s2); return m; } void push(struct nod** top_ref, int n_d) { struct nod* new_node = (struct nod*) malloc(sizeof(struct nod)); if (new_node == NULL) { cout << "Stack underflow \n"; exit(0); } //put items on stack new_node->d= n_d; new_node->n= (*top_ref); (*top_ref) = new_node; } int pop(struct nod** top_ref) { int res; struct nod *top; if (*top_ref == NULL)//if stack is null { cout << "Stack overflow \n"; exit(0); } else { //pop elements from stack top = *top_ref; res = top->d; *top_ref = top->n; free(top); return res; } } int main() { struct queue *q = (struct queue*) malloc(sizeof(struct queue)); q->s1 = NULL; q->s2 = NULL; cout << "Enqueuing..7"; cout << endl; enQueue(q, 7); cout << "Enqueuing..6"; cout << endl; enQueue(q, 6); cout << "Enqueuing..2"; cout << endl; enQueue(q, 2); cout << "Enqueuing..3"; cout << endl; enQueue(q, 3); cout << "Dequeuing..."; cout << deQueue(q) << " "; cout << endl; cout << "Dequeuing..."; cout << deQueue(q) << " "; cout << endl; cout << "Dequeuing..."; cout << deQueue(q) << " "; cout << endl; }
Output
Enqueuing..7 Enqueuing..6 Enqueuing..2 Enqueuing..3 Dequeuing...7 Dequeuing...6 Dequeuing...2
- Related Questions & Answers
- Python Program to Implement Queues using Stacks
- C++ Program to Implement Queue using Array
- C++ Program to Implement Queue
- C++ Program to Implement Queue using Linked List
- Python Program to Implement Stack using One Queue
- C++ Program to Implement Circular Queue
- C++ Program to Implement Priority Queue
- Program to Implement Queue in Python
- Python Program to Implement Queue Data Structure using Linked List
- C++ Program to Implement Queue in STL
- Java Program to Implement the queue data structure
- C++ Program to Implement Stack Using Two Queues
- Python Program to Implement Stack Using Two Queues
- C++ Program to Evaluate an Expression using Stacks
- Java Program to Reverse a String Using Stacks
Advertisements