-
Notifications
You must be signed in to change notification settings - Fork 0
/
oct176.cpp
117 lines (106 loc) · 1.42 KB
/
oct176.cpp
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
#include<iostream>
using namespace std;
template < class T >
struct node
{
T info;
node<T> * next;
};
template < class T >
class queue
{
node<T> * head;
node<T> * rear;
node<T> * temp;
int size;
int length;
public:
queue(int);
~queue();
void enqueue(T);
void dequeue();
bool isfull();
bool isempty();
T peek();
};
int main()
{
return 0;
}
template < class T >
queue<T>::queue(int size)
{
head = rear = NULL;
this->size = size;
length = 0;
}
template < class T >
queue<T>::~queue()
{
while(head != NULL)
dequeue();
}
template < class T >
void queue<T>::enqueue(T data)
{
if(isfull())
{
cout << "Queue Overflow!" << endl;
return;
}
if(rear == NULL)
{
rear = new node<T>;
head = rear;
}
else
{
rear->next = new node<T>;
rear = rear->next;
}
rear->info = data;
rear->next = NULL;
length++;
}
template < class T >
void queue<T>::dequeue()
{
if(isempty())
{
cout << "Queue Underflow!" << endl;
return;
}
cout << head->info << " Dequeued!" << endl;
temp = head;
head = head->next;
delete temp;
temp = NULL;
if(head == NULL)
rear = NULL;
length--;
}
template < class T >
bool queue<T>::isfull()
{
if(length == size)
return true;
return false;
}
template < class T >
bool queue<T>::isempty()
{
if(length == 0)
return true;
return false;
}
template < class T >
T queue<T>::peek()
{
if(isempty())
{
cout << "Nothing in Queue" << endl;
return 0;
}
T ret = head->info;
return ret;
}