Program to Implement Queue using two Stacks in Data Structures (C plus plus)
In this tutorial, we will learn about Program to Implement Queue using two Stacks in Data Structures (C plus plus).
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
/* Program to implement a queue using two stacks*/ #include<iostream> #include<stdlib.h> using namespace std; struct sNode { int info; struct sNode *next; }; void insert(struct sNode** top_ref, int new_data); int delet(struct sNode** top_ref); struct queue { struct sNode *stack1; struct sNode *stack2; }; void enqueue(struct queue *q, int x) { insert(&q->stack1, x); } int dequeue(struct queue *q) { int x; if (q->stack1 == NULL && q->stack2 == NULL) { cout << "Empty Queue"<<endl; exit(0); } if (q->stack2 == NULL) {
while (q->stack1 != NULL) { x = delet(&q->stack1); insert(&q->stack2, x); } } x = delet(&q->stack2); return x; } void insert(struct sNode** top_ref, int new_data) { struct sNode* new_node = (struct sNode*) malloc(sizeof(struct sNode)); if (new_node == NULL) { cout << "Stack overflowed \n"; exit(0); } new_node->info = new_data; new_node->next = (*top_ref); (*top_ref) = new_node; } int delet(struct sNode** top_ref) { int res; struct sNode *top; if (*top_ref == NULL) { cout << "Stack overflowed \n"; exit(0); } else { top = *top_ref; res = top->info; *top_ref = top->next; free(top); return res; } } int main() { struct queue *q = (struct queue*) malloc(sizeof(struct queue)); q->stack1 = NULL; q->stack2 = NULL; cout << "Enqueuing----"<<endl; enqueue(q, 1); cout << "Enqueuing----"<<endl; enqueue(q, 2); cout << "Enqueuing----"<<endl; enqueue(q, 3); cout << "Dequeuing----"; cout << dequeue(q) << " "<<endl;; cout << "Dequeuing----"; cout << dequeue(q) << " "<<endl; cout << "Dequeuing----"; cout << dequeue(q) << " "<<endl;; } |
Output:

Related Posts:
- Program to Implement Circular Queue in Data Structures (C plus plus)
- Program to Implement Priority Queue in Data Structures (C plus plus)
- Program to Implement Stack using two Queues in Data Structures (C plus plus)
- Program to evaluate an expression using stacks in Data Structures (C plus plus)
- How to Implement Queue in C++ using Array Data structures
- Simple queue, circular queue, priority queue, deque MCQs