-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathMYQUEUE.h
98 lines (78 loc) · 1.48 KB
/
MYQUEUE.h
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
#include <bits/stdc++.h>
using namespace std;
template <typename N> class NodeQueue
{
public:
N value;
NodeQueue *next;
NodeQueue(N val)
{
value = val;
next = NULL;
}
};
template < typename Q> class Queue
{
NodeQueue <Q> *front;
NodeQueue <Q> *rear;
public:
Queue()
{
front = NULL;
rear = NULL;
}
// enqueue --> push (val)
void push(Q val)
{
NodeQueue <Q> *newNode = new NodeQueue <Q> (val);
if (front == NULL)
{
front = newNode;
rear = newNode;
return;
}
rear->next = newNode;
rear = rear->next;
}
// deque --> pop ()
Q pop()
{
Q chk;
if (rear == NULL)
{
cout << "Queue Underflow | There is no element in the Queue" << endl;
return chk;
}
NodeQueue <Q> *delNode;
delNode = front;
front = front->next;
if (front == NULL)
{
rear = NULL;
}
chk = delNode->value;
delete delNode;
return chk;
}
// peek ---> front() back()
Q Front()
{
Q chk;
chk = front->value;
return chk;
}
Q Back()
{
Q chk;
chk = rear->value;
return chk;
}
// empty ---> empty()
bool empty()
{
if (front == NULL && rear == NULL)
return true;
else
return false;
}
};