Code:
#include iostream
#include cstdlib
using namespace std;
/*
* Node Declaration
*/
struct node
{
int info;
node *next;
node *prev;
}*head, *tail;
/*
* Class Declaration
*/
class dqueue
{
public:
int top1, top2;
void insert();
void del();
void display();
dqueue()
{
top1 = 0;
top2 = 0;
head = NULL;
tail = NULL;
}
};
/*
* Main: Contains Menu
*/
int main()
{
int choice;
dqueue dl;
while (1)
{
cout<<"\n-------------"<
cout<<"Operations on Deque"<
cout<<"\n-------------"<
cout<<"1.Insert Element into the Deque"<
cout<<"2.Delete Element from the Deque"<
cout<<"3.Traverse the Deque"<
cout<<"4.Quit"<
cout<<"Enter your Choice: ";
cin>>choice;
cout<
switch(choice)
{
case 1:
dl.insert();
break;
case 2:
dl.del();
break;
case 3:
dl.display();
break;
case 4:
exit(1);
break;
default:
cout<<"Wrong Choice"<
}
}
return 0;
}
/*
* Insert Element in Doubly Ended Queue
*/
void dqueue::insert()
{
struct node *temp;
int ch, value;
if (top1 + top2 >= 50)
{
cout<<"Dequeue Overflow"<
return;
}
if (top1 + top2 == 0)
{
cout<<"Enter the value to be inserted: ";
cin>>value;
head = new (struct node);
head->info = value;
head->next = NULL;
head->prev = NULL;
tail = head;
top1++;
cout<<"Element Inserted into empty deque"<
}
else
{
while (1)
{
cout<
cout<<"1.Insert Element at first"<
cout<<"2.Insert Element at last"<
cout<<"3.Exit"<
cout<
cout<<"Enter Your Choice: ";
cin>>ch;
cout<
switch(ch)
{
case 1:
cout<<"Enter the value to be inserted: ";
cin>>value;
temp = new (struct node);
temp->info = value;
temp->next = head;
temp->prev = NULL;
head->prev = temp;
head = temp;
top1++;
break;
case 2:
cout<<"Enter the value to be inserted: ";
cin>>value;
temp = new (struct node);
temp->info = value;
temp->next = NULL;
temp->prev = tail;
tail->next = temp;
tail = temp;
top2++;
break;
case 3:
return;
break;
default:
cout<<"Wrong Choice"<
}
}
}
}
/*
* Delete Element in Doubly Ended Queue
*/
void dqueue::del()
{
if (top1 + top2 <= 0)
{
cout<<"Deque Underflow"<
return;
}
int ch;
while (1)
{
cout<
cout<<"1.Delete Element at first"<
cout<<"2.Delete Element at last"<
cout<<"3.Exit"<
cout<
cout<<"Enter Your Choice: ";
cin>>ch;
cout<
switch(ch)
{
case 1:
head = head->next;
head->prev = NULL;
top1--;
break;
case 2:
tail = tail->prev;
tail->next = NULL;
top2--;
break;
case 3:
return;
break;
default:
cout<<"Wrong Choice"<
}
}
}
/*
* Display Doubly Ended Queue
*/
void dqueue::display()
{
struct node *temp;
int ch;
if (top1 + top2 <= 0)
{
cout<<"Deque Underflow"<
return;
}
while (1)
{
cout<
cout<<"1.Display Deque from Beginning"<
cout<<"2.Display Deque from End"<
cout<<"3.Exit"<
cout<
cout<<"Enter Your Choice: ";
cin>>ch;
cout<
switch (ch)
{
case 1:
temp = head;
cout<<"Deque from Beginning:"<
while (temp != NULL)
{
cout<
temp = temp->next;
}
cout<
break;
case 2:
cout<<"Deque from End:"<
temp = tail;
while (temp != NULL)
{
cout<
temp = temp->prev;
}
temp = tail;
cout<
break;
case 3:
return;
break;
default:
cout<<"Wrong Choice"<
}
}
}
Output:
-------------
Operations on Deque
-------------
1.Insert Element into the Deque
2.Delete Element from the Deque
3.Traverse the Deque
4.Quit
Enter your Choice: 3
Deque Underflow
-------------
Operations on Deque
-------------
1.Insert Element into the Deque
2.Delete Element from the Deque
3.Traverse the Deque
4.Quit
Enter your Choice: 2
Deque Underflow
-------------
Operations on Deque
-------------
1.Insert Element into the Deque
2.Delete Element from the Deque
3.Traverse the Deque
4.Quit
Enter your Choice: 1
Enter the value to be inserted: 100
Element Inserted into empty deque
-------------
Operations on Deque
-------------
1.Insert Element into the Deque
2.Delete Element from the Deque
3.Traverse the Deque
4.Quit
Enter your Choice: 3
1.Display Deque from Beginning
2.Display Deque from End
3.Exit
Enter Your Choice: 1
Deque from Beginning:
100
1.Display Deque from Beginning
2.Display Deque from End
3.Exit
Enter Your Choice: 2
Deque from End:
100
1.Display Deque from Beginning
2.Display Deque from End
3.Exit
Enter Your Choice: 3
-------------
Operations on Deque
-------------
1.Insert Element into the Deque
2.Delete Element from the Deque
3.Traverse the Deque
4.Quit
Enter your Choice: 1
1.Insert Element at first
2.Insert Element at last
3.Exit
Enter Your Choice: 1
Enter the value to be inserted: 200
1.Insert Element at first
2.Insert Element at last
3.Exit
Enter Your Choice: 2
Enter the value to be inserted: 150
1.Insert Element at first
2.Insert Element at last
3.Exit
Enter Your Choice: 3
-------------
Operations on Deque
-------------
1.Insert Element into the Deque
2.Delete Element from the Deque
3.Traverse the Deque
4.Quit
Enter your Choice: 3
1.Display Deque from Beginning
2.Display Deque from End
3.Exit
Enter Your Choice: 1
Deque from Beginning:
200 100 150
1.Display Deque from Beginning
2.Display Deque from End
3.Exit
Enter Your Choice: 2
Deque from End:
150 100 200
1.Display Deque from Beginning
2.Display Deque from End
3.Exit
Enter Your Choice: 3
-------------
Operations on Deque
-------------
1.Insert Element into the Deque
2.Delete Element from the Deque
3.Traverse the Deque
4.Quit
Enter your Choice: 2
1.Delete Element at first
2.Delete Element at last
3.Exit
Enter Your Choice: 1
1.Delete Element at first
2.Delete Element at last
3.Exit
Enter Your Choice: 3
-------------
Operations on Deque
-------------
1.Insert Element into the Deque
2.Delete Element from the Deque
3.Traverse the Deque
4.Quit
Enter your Choice: 3
1.Display Deque from Beginning
2.Display Deque from End
3.Exit
Enter Your Choice: 1
Deque from Beginning:
100 150
1.Display Deque from Beginning
2.Display Deque from End
3.Exit
Enter Your Choice: 2
Deque from End:
150 100
1.Display Deque from Beginning
2.Display Deque from End
3.Exit
Enter Your Choice: 3
-------------
Operations on Deque
-------------
1.Insert Element into the Deque
2.Delete Element from the Deque
3.Traverse the Deque
4.Quit
Enter your Choice: 1
1.Insert Element at first
2.Insert Element at last
3.Exit
Enter Your Choice: 1
Enter the value to be inserted: 1010
1.Insert Element at first
2.Insert Element at last
3.Exit
Enter Your Choice: 2
Enter the value to be inserted: 1111
1.Insert Element at first
2.Insert Element at last
3.Exit
Enter Your Choice: 3
-------------
Operations on Deque
-------------
1.Insert Element into the Deque
2.Delete Element from the Deque
3.Traverse the Deque
4.Quit
Enter your Choice: 3
1.Display Deque from Beginning
2.Display Deque from End
3.Exit
Enter Your Choice: 1
Deque from Beginning:
1010 100 150 1111
1.Display Deque from Beginning
2.Display Deque from End
3.Exit
Enter Your Choice: 2
Deque from End:
1111 150 100 1010
1.Display Deque from Beginning
2.Display Deque from End
3.Exit
Enter Your Choice: 3
-------------
Operations on Deque
-------------
1.Insert Element into the Deque
2.Delete Element from the Deque
3.Traverse the Deque
4.Quit
Enter your Choice: 2
1.Delete Element at first
2.Delete Element at last
3.Exit
Enter Your Choice: 2
1.Delete Element at first
2.Delete Element at last
3.Exit
Enter Your Choice: 3
-------------
Operations on Deque
-------------
1.Insert Element into the Deque
2.Delete Element from the Deque
3.Traverse the Deque
4.Quit
Enter your Choice: 3
1.Display Deque from Beginning
2.Display Deque from End
3.Exit
Enter Your Choice: 1
Deque from Beginning:
1010 100 150
1.Display Deque from Beginning
2.Display Deque from End
3.Exit
Enter Your Choice: 2
Deque from End:
150 100 1010
1.Display Deque from Beginning
2.Display Deque from End
3.Exit
Enter Your Choice: 3
-------------
Operations on Deque
-------------
1.Insert Element into the Deque
2.Delete Element from the Deque
3.Traverse the Deque
4.Quit
Enter your Choice: 4
------------------
(program exited with code: 1)
Press return to continue
More C++ Programs: