8.
A Write a program to implement the concept of Circular Queue
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
class cqueue
{
int *arr;
int rear,front;
int MAX;
public:
cqueue(int maxsize=10);
void addq(int data);
int delq();
void display();
};
cqueue::cqueue(int maxsize)
{
MAX=maxsize;
arr=new int[MAX];
front=rear=-1;
for(int i=0;i<MAX;i++)
{
arr[i]=0;
}
}
void cqueue::addq(int data)
{
if((rear+1)%MAX==front)
{
cout<<"\n Queue is Full";
return;
}
rear=(rear+1)%MAX;
arr[rear]=data;
if(front==-1)
{
front=0;
}
}
int cqueue::delq()
{
int num;
if(front==-1)
{
cout<<"\n Queue is empty";
return NULL;
}
num=arr[front];
arr[front]=0;
if(front==rear)
{
front=-1;
rear=-1;
}
else
{
front=(front+1)%MAX;
}
return num;
}
void cqueue::display()
{
cout<<"\n";
for(int i=0;i<MAX;i++)
{
cout<<arr[i]<<" ";
}
cout<<"\n";
}
void main()
{
clrscr();
cqueue c(10);
c.addq(11);
c.addq(12);
c.addq(13);
c.addq(14);
c.addq(15);
cout<<"\n Elements in the circular queue are: ";
c.display();
int i=c.delq();
cout<<"\n Data deleted is: "<<i;
i=c.delq();
cout<<"\n Data deleted is: "<<i;
cout<<"\n Elements in the circular queue after deletion: ";
c.display();
c.addq(1);
c.addq(2);
c.addq(3);
c.addq(4);
c.addq(5);
cout<<"\n Elements in the circular queue after addition: ";
c.display();
getch();
}
8.B Write a program to implement the concept of Deque
#include<iostream.h>
#include<conio.h>
#define max 5
int front=-1, rear=-1;
int q[max];
int insert_rear()
{
int val;
cout<<"\n Enter value: ";
cin>>val;
if((rear+1)%max==front)
{
cout<<"\n Queue is full";
return 0;
}
else if(rear==-1)
{
rear=front=0;
q[rear]=val;
cout<<"\n Inserted Successfully";
return val;
}
else
{
rear=(rear+1)%max;
q[rear]=val;
cout<<"\n Inserted Successfully";
return val;
}
}
int insert_front()
{
int val;
cout<<"\n Enter value: ";
cin>>val;
if((rear+1)%max==front)
{
cout<<"\n Queue is full";
return 0;
}
else if(front==-1)
{
rear=front=0;
q[front]=val;
cout<<"\n Inserted Successfully";
return val;
}
else
{
front=(front-1+max)%max;
q[front]=val;
cout<<"\n Inserted Successfully";
return val;
}
}
int deleteq_front()
{
int val;
if(front==-1)
{
cout<<"\n Queue is empty";
}
else if(front==rear)
{
int val=q[front];
front=rear=-1;
cout<<"\n Deleted value: "<<val;
return val;
}
else
{
val=q[front];
front=(front+1)%max;
cout<<"Deleted value: "<<val;
return val;
}
}
int deleteq_rear()
{
int val;
if(rear==-1)
{
cout<<"\n Queue is empty";
}
else if(front==rear)
{
int val=q[rear];
front=rear=-1;
cout<<"\n Deleted value: "<<val;
return val;
}
else
{
val=q[rear];
rear=(rear-1+max)%max;
cout<<"Deleted value: "<<val;
return val;
}
}
void display()
{
int i;
if(front==-1)
{
cout<<"\n Queue is empty";
}
else
{
cout<<"\n Queue is: ";
for(i=front; i!=rear;i=(i+1)%max)
{
cout<<q[i]<<" ";
}
cout<<q[i]<<" ";
}
}
void main()
{
int ch;
clrscr();
do
{
cout<<"\n Double Ended Queue (Deque) \n";
cout<<"1. Insert from Rear \n";
cout<<"2. Insert from Front \n";
cout<<"3. Delete from Front \n";
cout<<"4. Delete from Rear \n";
cout<<"5. Display \n";
cout<<"6. Exit \n";
cout<<"\n Enter your choice: ";
cin>>ch;
cout<<"\n";
switch(ch)
{
case 1: insert_rear();
break;
case 2: insert_front();
break;
case 3: deleteq_front();
break;
case 4: deleteq_rear();
break;
case 5: display();
break;
case 6:
break;
default:
cout<<"Invalid choice";
break;
}
}while(ch!=6);
getch();
}