-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCustomDequeue.java
110 lines (98 loc) · 3.32 KB
/
CustomDequeue.java
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
public class CustomDequeue {
private int [] data; // just to secure
private static final int DEFAULT_SIZE = 10; // we can't change the size
int front =0;
int rear=0;
int size =0;
public CustomDequeue(){
this(DEFAULT_SIZE);
}
public CustomDequeue(int size){
this.data = new int[size];
}
public boolean isFull(){
return size == data.length;
}
public boolean isEmpty(){
return size==0;
}
public boolean insertEnd(int item){
if(isFull()){
return false;
}
data[rear++] = item;
rear =rear% data.length;
size++;
return true;
}
public boolean insertBeg(int item) {
if (isFull()) {
return false;
}
front = (front-1+data.length) % data.length;
data[front] = item;
size++;
return true;
}
public int deleteBeg() throws Exception{
if(isEmpty()) {
throw new Exception ("queue is empty");
}
int removed = data[front++];
front =front% data.length;
size--;
return removed;
}
public int deleteEnd() throws Exception {
if (isEmpty()){
throw new Exception("queue is empty");
}
rear=(data.length -1+rear) % data.length;
int removed = data[rear];
size--;
return removed;
}
public void display() {
if (isEmpty()) {
System.out.println("Deque is empty.");
return;
}
int i = front;
// while(i< rear){ --> this will give error.You know how to visualise so, check by visualise
while(i!= rear){
System.out.print(data[i] + " <- ");
i =(i+1) % data.length; // or i = (data.length+1+i)%data.length
}
System.out.println(data[rear]);
System.out.println();
}
public static void main(String[] args) {
CustomDequeue deque = new CustomDequeue(5);
// Insert elements at the beginning and end
deque.insertBeg(1);
deque.insertEnd(2);
deque.insertBeg(3);
deque.insertEnd(4);
deque.display(); // Display the deque: 3 <- 1 <- 2 <- 4
// Delete elements from the beginning and end
try {
int removedFront = deque.deleteBeg();
System.out.println("Removed from the front: " + removedFront);
int removedEnd = deque.deleteEnd();
System.out.println("Removed from the end: " + removedEnd);
} catch (Exception e) {
System.err.println(e.getMessage());
}
deque.display(); // Display the updated deque: 1 <- 2
// Insert one more element at the end
deque.insertEnd(5);
deque.display(); // Display the updated deque: 1 <- 2 <- 5
}
}
/* output is :--
3 <- 1 <- 2 <- 4 <- 0
Removed from the front: 3
Removed from the end: 4
1 <- 2 <- 4
1 <- 2 <- 5 <- 0
*/