Java Double Ended Queue
Chapter:
Data Structures
Last Updated:
09-10-2016 17:48:38 UTC
Program:
/* ............... START ............... */
import java.util.ArrayList;
import java.util.List;
public class JavaDoubleEndedQueue {
private List<Integer> deque = new ArrayList<Integer>();
public void insertFront(int item) {
// add element at the beginning of the queue
System.out.println("adding at front: " + item);
deque.add(0, item);
System.out.println(deque);
}
public void insertRear(int item) {
// add element at the end of the queue
System.out.println("adding at rear: " + item);
deque.add(item);
System.out.println(deque);
}
public void removeFront() {
if (deque.isEmpty()) {
System.out.println("Deque underflow!! unable to remove.");
return;
}
// remove an item from the beginning of the queue
int rem = deque.remove(0);
System.out.println("removed from front: " + rem);
System.out.println(deque);
}
public void removeRear() {
if (deque.isEmpty()) {
System.out.println("Deque underflow!! unable to remove.");
return;
}
// remove an item from the beginning of the queue
int rem = deque.remove(deque.size() - 1);
System.out.println("removed from front: " + rem);
System.out.println(deque);
}
public int peakFront() {
// gets the element from the front without removing it
int item = deque.get(0);
System.out.println("Element at first: " + item);
return item;
}
public int peakRear() {
// gets the element from the rear without removing it
int item = deque.get(deque.size() - 1);
System.out.println("Element at rear: " + item);
return item;
}
public static void main(String a[]) {
JavaDoubleEndedQueue deq = new JavaDoubleEndedQueue();
deq.insertFront(34);
deq.insertRear(45);
deq.removeFront();
deq.removeFront();
deq.removeFront();
deq.insertFront(21);
deq.insertFront(98);
deq.insertRear(5);
deq.insertFront(43);
deq.removeRear();
}
}
/* ............... END ............... */
Output
adding at front: 34
[34]
adding at rear: 45
[34, 45]
removed from front: 34
[45]
removed from front: 45
[]
Deque underflow!! unable to remove.
adding at front: 21
[21]
adding at front: 98
[98, 21]
adding at rear: 5
[98, 21, 5]
adding at front: 43
[43, 98, 21, 5]
removed from front: 5
[43, 98, 21]
Notes:
-
A double-ended queue (dequeue or deque) is an abstract data type that generalizes a queue, for which elements can be added to or removed from either the front or rear.
- Deque differs from the queue abstract data type or First-In-First-Out List (FIFO), where elements can only be added to one end and removed from the other.
Tags
Double Ended Queue , Java, Data Structures