Array Deque/Dequeue Example Java Program
Definition
A double-ended queue is an abstract data type that generalizes a queue, for which elements can be added to or removed from either the front (head) or back (tail). It is also often called a head-tail linked list.
Array Deque/Dequeue Example Program
import java.util.Scanner;
class DequeueClass {
private int[] array;
private int val1, val2;
public DequeueClass() {
val1 = 0;
val2 = 0;
resize();
}
public boolean isEmpty() {
return val2 == 0;
}
public void clear() {
val1 = 0;
val2 = 0;
resize();
}
public int getSize() {
return val2;
}
private void resize() {
int[] num = new int[Math.max(2 * val2, 1)];
for (int i = 0; i < val2; i++) {
num[i] = array[(val1 + i) % array.length];
}
array = num;
val1 = 0;
}
public int get(int index) {
return array[(val1 + index) % array.length];
}
public int set(int a, int b) {
int y = array[(val1 + a) % array.length];
array[(val1 + a) % array.length] = b;
return y;
}
public void add(int num1, int num2) {
if (val2 + 1 > array.length) {
resize();
}
if (num1 < val2 / 2) {
val1 = (val1 == 0) ? array.length - 1 : val1 - 1;
for (int i = 0; i <= num1 - 1; i++) {
array[(val1 + i) % array.length] = array[(val1 + i + 1) % array.length];
}
} else {
for (int i = val2; i > num1; i--) {
array[(val1 + i) % array.length] = array[(val1 + i - 1) % array.length];
}
}
array[(val1 + num1) % array.length] = num2;
val2++;
}
public int remove(int position) {
int x = array[(val1 + position) % array.length];
if (position < val2 / 2) {
for (int i = position; i > 0; i--) {
array[(val1 + i) % array.length] = array[(val1 + i - 1) % array.length];
}
val1 = (val1 + 1) % array.length;
} else {
for (int i = position; i < val2 - 1; i++) {
array[(val1 + i) % array.length] = array[(val1 + i + 1) % array.length];
}
}
val2--;
if (3 * val2 < array.length) {
resize();
}
return x;
}
public void display() {
int num = val1;
for (int i = 0; i < val2; i++) {
System.out.print(array[num % array.length] + " ");
num++;
}
System.out.println();
}
}
public class ArrayDequeueExample {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
DequeueClass dequeueClass = new DequeueClass();
char character;
do {
System.out.println("\nMethods in Array Dequeue : \n");
System.out.println("1. Size");
System.out.println("2. Check if array is empty");
System.out.println("3. Add Element");
System.out.println("4. Get Element");
System.out.println("5. Set Element");
System.out.println("6. Remove Element");
System.out.println("7. Clear");
int choice = scan.nextInt();
switch (choice) {
case 1:
System.out.println("\nSize is " + dequeueClass.getSize());
break;
case 2:
System.out.println("\nArray is Empty or Not : " + dequeueClass.isEmpty());
break;
case 3:
System.out.println("Enter the index and element");
dequeueClass.add(scan.nextInt(), scan.nextInt());
break;
case 4:
System.out.println("Enter index");
break;
case 5:
System.out.println("Enter the index and element");
break;
case 6:
System.out.println("\nEnter index");
dequeueClass.remove(scan.nextInt());
break;
case 7:
System.out.println("\nArray cleared successfully");
dequeueClass.clear();
break;
default:
System.out.println("Entry is Wrong \n ");
break;
}
dequeueClass.display();
System.out.println("\nDo you wish to continue (Type Y or N) \n");
character = scan.next().charAt(0);
} while (character == 'Y' || character == 'y');
}
}
Sample Output
Methods in Array Dequeue :
1. Size
2. Check if array is empty
3. Add Element
4. Get Element
5. Set Element
6. Remove Element
7. Clear
3
Enter the index and element
0
100
100
Do you wish to continue (Type Y or N)
Y
Methods in Array Dequeue :
1. Size
2. Check if array is empty
3. Add Element
4. Get Element
5. Set Element
6. Remove Element
7. Clear
3
Enter the index and element
1
1000
100 1000
Do you wish to continue (Type Y or N)
Y
Methods in Array Dequeue :
1. Size
2. Check if array is empty
3. Add Element
4. Get Element
5. Set Element
6. Remove Element
7. Clear
1
Size is 2
100 1000
Do you wish to continue (Type Y or N)
N
Data Structure Programs
- Simple Queue Example Java Program
- Queue Example Java Program
- Queue Using Array And Class Example Java Program
- Priority Queue Example Java Program
- Array Deque/Dequeue Example Java Program
- Binary Search Example Java Program
- Binary Search In A Simple Way Example Java Program
- Stack In A Simple Way Example Java Program
- Stack Using Array And Class Example Java Program
- Stack Using Java Stack Utils Example Java Program
Read More Articles
- Multiple Inheritance Using Interface Example Java Program
- Single Inheritance Example Java Program
- Multilevel Inheritance Example Java Program
- Hierarchical Inheritance Example Java Program
- Find all Substrings of a given string Example Java Program
- Create Matrix Example Java Program
- Sum Of Three Numbers Example Java Program
- Heap Sort Example Java Program
- Twin Prime Example Java Program
- Compile Time Polymorphism Example Java Program