-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTaskQueue.java
More file actions
72 lines (63 loc) · 1.4 KB
/
TaskQueue.java
File metadata and controls
72 lines (63 loc) · 1.4 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
/**
* A queue class, implemented as a linked list.
* The nodes of the linked list are implemented as the TaskElement class.
*
* IMPORTANT: you may not use any loops/recursions in this class.
*/
/*
Assignment number : 8
File Name : TaskQueue.java
Name: Ran Zaaroor
Student ID : 209374040
Email : Ran.zaaroor@gmail.com
*/
public class TaskQueue {
TaskElement first;
TaskElement last;
/**
* Constructs an empty queue
*/
public TaskQueue(){
first = null;
last = null;
}
/**
* Removes and returns the first element in the queue
*
* @return the first element in the queue
*/
public TaskElement dequeue(){
if (this.first == null){
throw new IllegalStateException("empty queue");
}
TaskElement ans = this.first;
this.first = this.first.prev;
if(this.first != null){
this.first.next = null;
}
return ans;
}
/**
* Returns and does not remove the first element in the queue
*
* @return the first element in the queue
*/
public TaskElement peek(){
return this.first;
}
/**
* Adds a new element to the back of the queue
*
* @param node
*/
public void enqueue(TaskElement node){
if (first == null){
first = node;
last = node;
return;
}
node.next = this.last;
this.last.prev = node;
this.last = node;
}
}