-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathQueue.cpp
70 lines (63 loc) · 1.25 KB
/
Queue.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
#include "Queue.h"
#include "DataStructuresStudent.h"
#include "Node.h"
#include "Queue.h"
#include <iostream>
#include <string>
using namespace std;
typedef DataStructuresStudent type;
Queue::Queue() {
front = back = NULL;
}
void Queue::setFront(Node < type * > * h) {
front = h;
}
void Queue::setBack(Node < type * > * h) {
back = h;
}
type * Queue::peek() {
return front -> data;
}
type * Queue::Back() {
return back -> data;
}
int Queue::count() {
Node < type * > * temp = front;
int c = 0;
while (temp != NULL) {
c++;
temp = temp -> next;
}
return c;
}
bool Queue::isEmpty() {
return ((front == NULL) && (back == NULL));
}
void Queue::enqueue(type * n) {
Node < type * > * temp = new Node < type * > (n);
if (isEmpty()) front = back = temp;
else {
back -> next = temp;
back = temp;
}
}
type * Queue::dequeue() {
Node < type * > * result;
result = front;
type * data = front -> data;
if (count() == 1) back = back -> next;
front = front -> next;
delete result;
return data;
}
void Queue::traverse() {
Node < type * > * temp = front;
while (temp != NULL) {
cout << * temp -> data << "\n";
temp = temp -> next;
}
}
ostream & operator << (ostream & o, Queue q) {
q.traverse();
return o;
}