Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 6

* c++ program to implement double ended queue using doubly linked list with temp

lates*/
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
template<class t>
struct node
{
t data;
node<t> *llink;
node<t> *rlink;
};

template<class t>
class dequeue
{
private:
node<t> *front,*rear;
public:
dequeue()
{
front=rear=NULL;
}

node<t> *getnode()
{
node<t> *newnode=new node<t>;
newnode->llink=NULL;
newnode->rlink=NULL;
return newnode;
}

void insfrnt();
void insrear();
void delfrnt();
void delrear();
void disfrnt();
void disrear();
};

template<class t>
void dequeue<t>::insfrnt()
{
node<t> *newnode=getnode();
cout<<"Enter The Element That Has To Enqueued At The Front"<<endl;
cin>>newnode->data;
if(front==NULL && rear==NULL)
front=rear=newnode;
else
{
newnode->rlink=front;
front->llink=newnode;
front=newnode;
}
}
template<class t>
void dequeue<t>::insrear()
{
node<t> *newnode=getnode();
cout<<"Enter The Element That has to be Enqueued at the Rear"<<endl;
cin>>newnode->data;
if(front==NULL && rear==NULL)
front=rear=newnode;
else
{
rear->rlink=newnode;
newnode->llink=rear;
rear=newnode;
}
}

template<class t>
void dequeue<t>::delfrnt()
{
if(front==NULL)
cout<<"Dequeue Underflow"<<endl;
else
{
node<t> *temp;
temp=front;
if(front==rear)
front=rear=NULL;
else
{
front=temp->rlink;
front->llink=NULL;
}
cout<<temp->data<<" is the element deleted from the dequeue"<<endl;
delete temp;
}
}

template<class t>
void dequeue<t>::delrear()
{
if(rear==NULL)
cout<<"Dequeue Underflow"<<endl;
else
{
node<t> *temp,*prev;
temp=rear;
if(front==rear)
front=rear=NULL;
else
{
rear=temp->llink;
rear->rlink=NULL;
}
cout<<temp->data<<" is the element deleted from the dequeue"<<endl;
delete temp;
}
}

template<class t>
void dequeue<t>::disfrnt()
{
if(front==NULL)
cout<<"Dequeue Underflow"<<endl;
else
{
node<t> *temp;
temp=front;
cout<<"front";
while(temp!=NULL)
{
cout<<"->"<<temp->data;
temp=temp->rlink;
}
cout<<"<-rear"<<endl;
}
}

template<class t>
void dequeue<t>::disrear()
{
if(rear==NULL)
cout<<"Dequeue Underflow"<<endl;
else
{
node<t> *temp;
temp=rear;
cout<<"rear";
while(temp!=NULL)
{
cout<<"->"<<temp->data;
temp=temp->llink;
}
cout<<"->front"<<endl;
}
}

void main()
{
dequeue<int> dq_int;
dequeue<float> dq_float;
dequeue<char> dq_char;
int choice;
do
{
clrscr();
cout<<"DEQUEUE :"<<endl;
cout<<"\t Double Ended Queue (abb :- deque ; pronounced as deck) is an abstract
data structure for which elements can be added at the front as well as at the re
ar. It is often called as Head-Tailed Linked List"<<endl;
cout<<"\t========================"<<endl;
cout<<"\t\tDequeue Menu"<<endl;
cout<<"\t========================"<<endl;
cout<<"[1] Dequeue Of Integer Values"<<endl;
cout<<"[2] Dequeue Of Floating Values"<<endl;
cout<<"[3] Dequeue Of Characters"<<endl;
cout<<"[4] Exit"<<endl;
cout<<"\t Enter Your Choice"<<endl;
cin>>choice;
switch(choice)
{
case 1:
clrscr();
int chi;
do
{
cout<<"\t======================="<<endl;
cout<<"\tDequeue Of Integer Values"<<endl;
cout<<"\t======================="<<endl;
cout<<"[1] Insert Element At Front"<<endl;
cout<<"[2] Insert Element At Rear"<<endl;
cout<<"[3] Delete Element At Front"<<endl;
cout<<"[4] Delete Element At Rear "<<endl;
cout<<"[5] Display Element(s) At Front"<<endl;
cout<<"[6] Display Element(s) At Rear"<<endl;
cout<<"[7] Back To Main Menu"<<endl;
cout<<"\tEnter Your Choice"<<endl;
cin>>chi;
switch(chi)
{
case 1: dq_int.insfrnt();
break;
case 2: dq_int.insrear();
break;
case 3: dq_int.delfrnt();
break;
case 4: dq_int.delrear();
break;
case 5: dq_int.disfrnt();
break;
case 6: dq_int.disrear();
break;
}
}
while(chi<=6);
break;

case 2:
clrscr();
int chF;
do
{
cout<<"\t======================="<<endl;
cout<<"\tDequeue Of Floating Values"<<endl;
cout<<"\t======================="<<endl;
cout<<"[1] Insert Element At Front"<<endl;
cout<<"[2] Insert Element At Rear"<<endl;
cout<<"[3] Delete Element At Front"<<endl;
cout<<"[4] Delete Element At Rear "<<endl;
cout<<"[5] Display Element(s) At Front"<<endl;
cout<<"[6] Display Element(s) At Rear"<<endl;
cout<<"[7] Back To Main Menu"<<endl;
cout<<"\tEnter Your Choice"<<endl;
cin>>chi;
switch(chi)
{
case 1: dq_float.insfrnt();
break;
case 2: dq_float.insrear();
break;
case 3: dq_float.delfrnt();
break;
case 4: dq_float.delrear();
break;
case 5: dq_float.disfrnt();
break;
case 6: dq_float.disrear();
break;
}
}
while(chi<=6);
break;

case 3:
clrscr();
int chc;
do
{
cout<<"\t======================="<<endl;
cout<<"\tDequeue Of Integer Values"<<endl;
cout<<"\t======================="<<endl;
cout<<"[1] Insert Element At Front"<<endl;
cout<<"[2] Insert Element At Rear"<<endl;
cout<<"[3] Delete Element At Front"<<endl;
cout<<"[4] Delete Element At Rear "<<endl;
cout<<"[5] Display Element(s) At Front"<<endl;
cout<<"[6] Display Element(s) At Rear"<<endl;
cout<<"[7] Back To Main Menu"<<endl;
cout<<"\tEnter Your Choice"<<endl;
cin>>chc;
switch(chc)
{
case 1: dq_char.insfrnt();
break;
case 2: dq_char.insrear();
break;
case 3: dq_char.delfrnt();
break;
case 4: dq_char.delrear();
break;
case 5: dq_char.disfrnt();
break;
case 6: dq_char.disrear();
break;
}
}
while(chi<=6);
break;
case 4: exit(0);
break;

}
}
while(choice<=3);
}
Read more: http://wiki.answers.com/Q/Double-ended_queue_using_c_program#ixzz1F7u
fodCZ

You might also like