forked from rituburman/hacktoberfest2020
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathqueueWithDLL.cpp
More file actions
155 lines (144 loc) · 2.94 KB
/
queueWithDLL.cpp
File metadata and controls
155 lines (144 loc) · 2.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
// This program illustrates the concept of Queue Data Structure using doubly linked list.
// Methods for push, pop, and displaying the contents of the queue have been programmed.
#include<iostream>
#define MAX 5
using namespace std;
class node
{
public:
node* next;
int data;
node* prev;
};
node* front = NULL;
node* rear = NULL;
bool isEmpty() // To check if the Queue is empty
{
if(front == NULL && rear == NULL)
{
return true;
}
return false;
}
bool isFull(int n) // To check if the queue is full
{
if(n == MAX)
{
return true;
}
return false;
}
void push(node* new_node, int n) // Inserts the element to the end of queue
{
if(isFull(n))
{
cout << "Overflow!!\n";
}
else
{
if(n == 0)
{
front = new_node;
rear = new_node;
new_node->next = NULL;
new_node->prev = NULL;
}
else
{
new_node->next = NULL;
new_node->prev = rear;
rear->next = new_node;
rear = new_node;
}
}
}
int pop() // Removes the front element from the queue.
{
if(isEmpty())
{
cout << "Underflow!!\n";
return -1;
}
else
{
node* temp = front;
int item;
if(front == rear)
{
item = temp->data;
front = NULL;
rear = NULL;
delete temp;
}
else
{
item = temp->data;
temp->next->prev = NULL;
front = temp->next;
delete temp;
}
return item;
}
}
void display() // Displays the contents of queue
{
if(isEmpty())
{
cout << "Underflow!!\n";
}
else
{
node* temp = front;
while(temp != NULL)
{
cout << temp->data << endl;
temp = temp->next;
}
}
}
// Driver Method
int main()
{
int n=0,choice;
while(1)
{
cout << "\n1.Push\n";
cout << "\n2.Pop\n";
cout << "\n3.Display\n";
cout << "\n4.Exit\n";
cout << "Enter your choice: ";
cin >> choice;
switch(choice)
{
case 1:
{
node* new_node = new node();
int item;
cout << "Enter the element you want to push into the Queue: ";
cin >> item;
new_node->data = item;
push(new_node, n);
n++;
break;
}
case 2:
{
int popped = pop();
cout << popped << endl;
n--;
break;
}
case 3:
{
display();
break;
}
case 4:
{
return 0;
}
default:
cout << "Enter the valid choice!!\n";
}
}
}