0% found this document useful (0 votes)
42 views10 pages

Ds Practical 8

Uploaded by

sawant.chirag
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
42 views10 pages

Ds Practical 8

Uploaded by

sawant.chirag
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 10

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();
}

You might also like