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

Similar Programs Chapter Last Updated
HashMap Implementation In Java Data Structures 07-07-2018
Linked List Implementation In Java Data Structures 09-03-2018
Queue Implementation In Java Data Structures 22-09-2018
Stack Implementation In Java Data Structures 22-09-2018
Binary Search Tree Java Data Structures 11-02-2018
Insertion Sort In Java Data Structures 10-02-2018
Java Stack Example Data Structures 16-10-2017
Java String Array Sort Data Structures 31-03-2017
Java Hashmap Add Key And Value Data Structures 25-03-2017
Java Binary Tree Vertical Sum Data Structures 11-11-2016
Java Binary Tree Boundary Traversal Data Structures 11-11-2016
Java Binary Tree Lowest Common Ancestor (LCA) Data Structures 11-11-2016
Java Binary Tree Maximum Element Data Structures 11-11-2016
Java Three Dimensional Array Data Structures 28-10-2016
Java Infix Expression To Postfix Expression Data Structures 25-10-2016
Java Linked List Add Element First And Last Data Structures 24-10-2016
Java Maximum Element From Vector Data Structures 24-10-2016
Java Binary Search On Vector Data Structures 24-10-2016
Java Get Elements Of LinkedList Data Structures 23-10-2016
Java Linked List Update Element Data Structures 23-10-2016
Java Delete Elements From LinkedList Data Structures 23-10-2016
Java Dynamic Queue Using Array Data Structures 26-09-2018
Java Queue Array Based Implementation Data Structures 07-10-2016
Java Sort Short Array Data Structures 25-09-2016
Java Sort Long Array Data Structures 25-09-2016
Java Sort Int Array Data Structures 19-09-2016
Java Sort Float Array Data Structures 19-09-2016
Java Sort Double Array Data Structures 19-09-2016
Java Sort Char Array Data Structures 19-09-2016
Java Sort Byte Array Data Structures 19-09-2016

1 2 3