Queue Implementation using Stack
Table of Content:
Implement queue using stack
Function to create a queue
/*Function to create a queue*/ void create() { top1 = top2 = -1; }
Function to push the element on to the stack
/*Function to push the element on to the stack*/ void push1(int data) { st1[++top1] = data; }
Function to pop the element from the stack
/*Function to pop the element from the stack*/ int pop1() { return(st1[top1--]); }
Function to push an element on to stack
/*Function to push an element on to stack*/ void push2(int data) { st2[++top2] = data; }
Function to pop an element from th stack
/*Function to pop an element from th stack*/ int pop2() { return(st2[top2--]); }
Function to add an element into the queue using stack
/*Function to add an element into the queue using stack*/ void enqueue() { int data, i; printf("Enter data into queue"); scanf("%d", &data); push1(data); count++; }
Function to delete an element from the queue using stack
/*Function to delete an element from the queue using stack*/ void dequeue() { int i; for (i = 0;i <= count;i++) { push2(pop1()); } pop2(); count--; for (i = 0;i <= count;i++) { push1(pop2()); } }
Function to display the elements in the stack
/*Function to display the elements in the stack*/ void display() { int i; for (i = 0;i <= top1;i++) { printf(" %d ", st1[i]); } }
C Program to Implement Queues using Stacks
/* * C Program to Implement Queues using Stacks */ #include#include void push1(int); void push2(int); int pop1(); int pop2(); void enqueue(); void dequeue(); void display(); void create(); int st1[100], st2[100]; int top1 = -1, top2 = -1; int count = 0; void main() { int ch; printf("\n1 - Enqueue element into queue: "); printf("\n2 - Dequeu element from queue: "); printf("\n3 - Display from queue: "); printf("\n4 - Exit"); create(); while (1) { printf("\nEnter choice: "); scanf("%d", &ch); switch (ch) { case 1: enqueue(); break; case 2: dequeue(); break; case 3: display(); break; case 4: exit(0); default: printf("Wrong choice"); } } } /*Function to create a queue*/ void create() { top1 = top2 = -1; } /*Function to push the element on to the stack*/ void push1(int data) { st1[++top1] = data; } /*Function to pop the element from the stack*/ int pop1() { return(st1[top1--]); } /*Function to push an element on to stack*/ void push2(int data) { st2[++top2] = data; } /*Function to pop an element from th stack*/ int pop2() { return(st2[top2--]); } /*Function to add an element into the queue using stack*/ void enqueue() { int data, i; printf("Enter data into queue: "); scanf("%d", &data); push1(data); count++; } /*Function to delete an element from the queue using stack*/ void dequeue() { int i; for (i = 0;i <= count;i++) { push2(pop1()); } pop2(); count--; for (i = 0;i <= count;i++) { push1(pop2()); } } /*Function to display the elements in the stack*/ void display() { int i; for (i = 0;i <= top1;i++) { printf(" %d ", st1[i]); } }
Output:
1 - Enqueue element into queue: 2 - Dequeu element from queue: 3 - Display from queue: 4 - Exit Enter choice: 1 Enter data into queue: 10 Enter choice: 1 Enter data into queue: 12 Enter choice: 3 10 12 Enter choice: 2 Enter choice: 3 12 Enter choice: 4 Press any key to continue . . .