From 57ef28e9fe50af91ea8d68f1cf04e1dd203b722e Mon Sep 17 00:00:00 2001 From: Garima Gupta Date: Sun, 21 Oct 2018 14:50:07 +0530 Subject: [PATCH] Queue implementation is added --- CircularQueue.c | 94 +++++++++++++++++++++++++++++++++++++++++++++++++ Queue.cpp | 39 ++++++++++++++++++++ 2 files changed, 133 insertions(+) create mode 100644 CircularQueue.c create mode 100644 Queue.cpp diff --git a/CircularQueue.c b/CircularQueue.c new file mode 100644 index 0000000..1c7057c --- /dev/null +++ b/CircularQueue.c @@ -0,0 +1,94 @@ +#include + +#define SIZE 5 + +int items[SIZE]; +int front = -1, rear =-1; + +int isFull() +{ + if( (front == rear + 1) || (front == 0 && rear == SIZE-1)) return 1; + return 0; +} + +int isEmpty() +{ + if(front == -1) return 1; + return 0; +} + +void enQueue(int element) +{ + if(isFull()) printf("\n Queue is full!! \n"); + else + { + if(front == -1) front = 0; + rear = (rear + 1) % SIZE; + items[rear] = element; + printf("\n Inserted -> %d", element); + } +} + + +int deQueue() +{ + int element; + if(isEmpty()) { + printf("\n Queue is empty !! \n"); + return(-1); + } else { + element = items[front]; + if (front == rear){ + front = -1; + rear = -1; + } /* Q has only one element, so we reset the queue after dequeing it. ? */ + else { + front = (front + 1) % SIZE; + + } + printf("\n Deleted element -> %d \n", element); + return(element); + } +} + + + + +void display() +{ + int i; + if(isEmpty()) printf(" \n Empty Queue\n"); + else + { + printf("\n Front -> %d ",front); + printf("\n Items -> "); + for( i = front; i!=rear; i=(i+1)%SIZE) { + printf("%d ",items[i]); + } + printf("%d ",items[i]); + printf("\n Rear -> %d \n",rear); + } +} + +int main() +{ + + enQueue(1); + enQueue(2); + enQueue(3); + enQueue(4); + enQueue(5); + + + display(); + deQueue(); + + display(); + + enQueue(6); + display(); + + + return 0; +} + diff --git a/Queue.cpp b/Queue.cpp new file mode 100644 index 0000000..fac519e --- /dev/null +++ b/Queue.cpp @@ -0,0 +1,39 @@ +#include +#include +using namespace std; + +struct Queue { + stack s; + void enQueue(int x) + { + s.push(x); + } + int deQueue() + { + if (s.empty()) { + cout << "Q is empty"; + return(0); + } + int x = s.top(); + s.pop(); + if (s.empty()) + return x; + int item = deQueue(); + s.push(x); + return item; + } +}; +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; +} +