-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathLinkedQueue.java
More file actions
129 lines (94 loc) · 2.42 KB
/
LinkedQueue.java
File metadata and controls
129 lines (94 loc) · 2.42 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
import java.util.NoSuchElementException;
public class LinkedQueue
{
private Node firstNode; // References node at front of queue
private Node lastNode; // References node at back of queue
public LinkedQueue()
{
firstNode = null;
lastNode = null;
} // end default constructor
// < Implementations of the queue operations go here. >
// . . .
private class Node
{
private int data; // Entry in queue
private Node next; // Link to next node
private Node(int dataPortion)
{
data = dataPortion;
next = null;
} // end constructor
private Node(int dataPortion, Node linkPortion)
{
data = dataPortion;
next = linkPortion;
} // end constructor
private int getData()
{
return data;
} // end getData
private void setData(int newData)
{
data = newData;
} // end setData
private Node getNextNode()
{
return next;
} // end getNextNode
private void setNextNode(Node nextNode)
{
next = nextNode;
} // end setNextNode
} // end Node
/** Adds a new entry to the back of this queue.
@param newEntry An object to be added. */
public void enqueue(int newEntry) {
Node newNode = new Node(newEntry,null);
if (isEmpty()) {
firstNode = newNode;
} else {
lastNode.setNextNode(newNode);
}
lastNode = newNode;
}
/** Removes and returns the entry at the front of this queue.
@return The object at the front of the queue.
@throws EmptyQueueException if the queue is empty before the operation. */
public int dequeue() {
int front = getFront();
//firstNode.setData(null);
firstNode = firstNode.getNextNode();
if (firstNode == null) {
lastNode = null;
}
return front;
}
/** Retrieves the entry at the front of this queue.
@return The object at the front of the queue.
@throws EmptyQueueException if the queue is empty. */
public int getFront() {
if (isEmpty()) {
throw new NoSuchElementException();
} else {
return firstNode.getData();
}
}
public int getBack() {
if (isEmpty()) {
throw new NoSuchElementException();
} else {
return lastNode.getData();
}
}
/** Detects whether this queue is empty.
@return True if the queue is empty, or false otherwise. */
public boolean isEmpty() {
return (firstNode == null) && (lastNode == null);
}
/** Removes all entries from this queue. */
public void clear() {
firstNode = null;
lastNode = null;
}
} // end LinkedQueue