-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathQueue.java
More file actions
82 lines (70 loc) · 1.73 KB
/
Queue.java
File metadata and controls
82 lines (70 loc) · 1.73 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
package queue;
/**
* This is an implementation of the Circular Queue
*/
public class Queue {
private int[] items = new int[5];
private int head = -1;
private int tail = -1;
private int numOfItems = 0; // this field makes the implementation easy, but we can implement even without it.
public Queue() {}
public Queue(int size) {
this.items = new int[size];
}
public void enqueue(int item) {
if (isFull())
throw new RuntimeException("Queue is full");
if (tail == items.length-1) // deal with circular case
tail = -1;
items[++tail] = item;
// if (head == -1) head++;
numOfItems++; // add 1 to the item count
}
public int dequeue() {
if (isEmpty())
throw new RuntimeException("Queue is empty");
if (head == items.length-1)
head = -1;
numOfItems--;
return items[++head];
}
public int peek() {
return items[head+1];
}
public boolean isFull() {
return numOfItems == items.length;
}
public boolean isEmpty() {
return numOfItems == 0;
}
public static void main(String[] args) {
Queue q = new Queue();
System.out.println(q.isEmpty());
q.enqueue(5);
q.enqueue(4);
q.enqueue(6);
q.enqueue(10);
q.enqueue(46);
System.out.println(q.dequeue());
System.out.println(q.dequeue());
System.out.println(q.dequeue());
System.out.println(q.dequeue());
System.out.println(q.dequeue());
q.enqueue(2);
q.enqueue(4);
q.enqueue(6);
q.enqueue(8);
q.enqueue(10);
System.out.println(q.dequeue());
System.out.println(q.dequeue());
System.out.println(q.dequeue());
System.out.println(q.dequeue());
q.enqueue(11);
q.enqueue(12);
q.enqueue(13);
System.out.println(q.dequeue());
System.out.println(q.dequeue());
System.out.println(q.dequeue());
System.out.println(q.dequeue());
}
}