From 5d087b2f4444c1ec431e376a8fe74edd07cf8fb4 Mon Sep 17 00:00:00 2001
From: catchmeifyoucanisalreadytaken
 <31013625+catchmeifyoucanisalreadytaken@users.noreply.github.com>
Date: Fri, 25 Oct 2019 13:39:20 +0530
Subject: [PATCH] Create Circular Queue

---
 Circular Queue | 99 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 99 insertions(+)
 create mode 100644 Circular Queue

diff --git a/Circular Queue b/Circular Queue
new file mode 100644
index 00000000..d9450dfb
--- /dev/null
+++ b/Circular Queue	
@@ -0,0 +1,99 @@
+#include<iostream.h>
+#include<conio.h>
+#include<process.h>
+int insert_in_CQ(int[],int);
+void display(int[],int,int);
+int del_in_CQ(int[]);
+
+const int size=5;
+int CQueue[size],front=-1,rear=-1;
+
+void main()
+{int item,res,ch;
+
+do{	system("cls");
+	cout<<"\t\t\tCircular Queue Menu\n";
+	cout<<"\t1. Insert\n";
+	cout<<"\t2. Delete\n";
+	cout<<"\t3. Display\n";
+	cout<<"\t4. Exit\n";
+	cout<<"Enter your choice (1-4)...";
+	cin>>ch;
+	switch(ch)
+	{	case 1: cout<<"\nEnter item for insertion : ";
+			cin>>item;
+			res=insert_in_CQ(CQueue,item);
+			if(res==-1)cout<<"\nOverflow!\n";
+			else
+			{	cout<<"\nNow the Circular Queue is:\n";
+				display(CQueue,front,rear);
+			}
+			system("pause");
+			break;
+		case 2: item=del_in_CQ(CQueue);
+			cout<<"Element deleted is: "<<item<<endl;
+			display(CQueue,front,rear);
+			system("pause");
+			break;
+		case 3: display(CQueue,front,rear);
+			system("pause");
+			break;
+		case 4: break;
+		default:cout<<"Enter a valid option (1-4) \n";
+			system("pause");
+			break;
+	}
+ }while(ch!=4);
+getch();
+}
+
+int insert_in_CQ(int CQueue[],int ele)
+{if((front==0&&rear==size-1)||(front==rear+1))
+return -1;
+else if(rear==-1)
+front=rear=0;
+else if(rear==size-1)
+rear=0;
+else
+rear++;
+CQueue[rear]=ele;
+return 0;
+}
+
+void display(int CQueue[],int front,int rear)
+{int i=0;
+cout<<"\n Circular Queue is:\n"<<"(Front shown as>>>,Rear as<<< and free space as-)\n";
+if(front==-1)return;
+if(rear>=front)
+{for(i=0;i<front;i++)
+cout<<"-"<<">>>";
+for(i=front;i<rear;i++)
+cout<<CQueue[i]<<"<-";
+cout<<CQueue[rear]<<"<<<"<<endl;
+}
+else
+{for(i=0;i<rear;i++)cout<<CQueue[i]<<"<-";
+cout<<CQueue[rear]<<"<<<";
+for(;i<front;i++)
+cout<<"-";
+cout<<">>>";
+for(i=front;i<size;i++)
+cout<<CQueue[i]<<"<-";
+cout<<"\t...wrap around...";
+}
+}
+int del_in_CQ(int CQueue[])
+{int ret;
+if(front==-1)
+return -1;
+else
+{
+ret=CQueue[front];
+if(front==rear)
+front=rear=-1;
+else if(front==size-1)
+front=0;
+else front++;
+}
+return ret;
+}