Dynamic Deque Visualization
A Double-Ended Queue (Deque) allows adding and removing elements from both ends. Explore its operations with real-time visualization and step-by-step code execution.
Deque is empty. Add elements to get started!
Size:
0
Capacity:
8
Last Operation:
None
Operation Explanation
Select an operation from the controls panel to see the step-by-step execution with highlighted code and detailed explanations.
Deque.java
View Source
public class Deque<T> {
private Object[] deque;
private int size;
private int capacity;
private int front;
private int rear;
public Deque() {
capacity = 5;
deque = new Object[capacity];
size = 0;
front = -1;
rear = -1;
}
public boolean isFull() {
return size == capacity;
}
public boolean isEmpty() {
return size == 0;
}
private void resize() {
int newCapacity = capacity * 2;
Object[] newDeque = new Object[newCapacity];
int i = 0;
int j = front;
while (i < size) {
newDeque[i] = deque[j];
j = (j + 1) % capacity;
i++;
}
deque = newDeque;
capacity = newCapacity;
front = 0;
rear = size - 1;
}
public void addFirst(T element) {
if (isFull()) {
resize();
}
if (isEmpty()) {
front = 0;
rear = -1;
} else {
front = (front - 1 + capacity) % capacity;
}
deque[front] = element;
size++;
}
public void addLast(T element) {
if (isFull()) {
resize();
}
if (isEmpty()) {
front = 0;
rear = -1;
} else {
rear = (rear + 1) % capacity;
}
deque[rear] = element;
size++;
}
public T removeFirst() {
if (isEmpty()) {
return null;
}
T element = (T) deque[front];
deque[front] = null;
size--;
if (isEmpty()) {
front = -1;
rear = -1;
} else {
front = (front + 1) % capacity;
}
return element;
}
public T removeLast() {
if (isEmpty()) {
return null;
}
T element = (T) deque[rear];
deque[rear] = null;
size--;
if (isEmpty()) {
front = -1;
rear = -1 ;
} else {
rear = (rear - 1 + capacity) % capacity;
}
return element;
}
public T peekFirst() {
if (isEmpty()) {
return null;
}
return (T) deque[front];
}
public T peekLast() {
if (isEmpty()) {
return null;
}
return (T) deque[rear];
}
public int size() {
return size;
}
}
Deque Operations
Animation Controls
Slow
Fast
Presets
Statistics
Operations:
0
Comparisons:
0
Time Complexity (Last Operation):
-