programming-examples/java/Data_Structures/Java Program to implement Array Deque.java

568 lines
9.3 KiB
Java
Raw Normal View History

2019-11-15 12:59:38 +01:00
/**
** Java Program to implement Array Deque
**/
import java.util.Scanner;
/** Class ArrayDeque **/
class ArrayDeque
{
private int[] a;
private int j, n;
/** constructor **/
public ArrayDeque()
{
j = 0;
n = 0;
resize();
}
/** function to check if empty **/
public boolean isEmpty()
{
return n == 0;
}
/** function to clear array deque **/
public void clear()
{
j = 0;
n = 0;
resize();
}
/** function to get number of elements **/
public int getSize()
{
return n;
}
/** function to resize array deque **/
private void resize()
{
int[] temp = new int[Math.max(2 * n, 1)];
for (int k = 0; k < n; k++)
temp[k] = a[(j + k) % a.length];
a = temp;
j = 0;
}
/** function to get an element array deque **/
public int get(int i)
{
return a[(j + i) % a.length];
}
/** function to set an element **/
public int set(int i, int x)
{
int y = a[(j + i) % a.length];
a[(j + i) % a.length] = x;
return y;
}
/** function to add an element **/
void add(int i, int x)
{
if (n + 1 > a.length)
resize();
if (i < n/2)
{
/** shift left one position **/
j = (j == 0) ? a.length - 1 : j - 1;
for (int k = 0; k <= i - 1; k++)
a[(j + k) % a.length] = a[(j + k + 1)%a.length];
}
else
{
/** shift right one position **/
for (int k = n; k > i; k--)
a[(j + k) % a.length] = a[(j + k - 1)%a.length];
}
a[(j + i) % a.length] = x;
n++;
}
/** function to remove an element **/
public int remove(int i)
{
int x = a[(j + i) % a.length];
if (i < n/2)
{
/** shift a[0],..,[i-1] right one position **/
for (int k = i; k > 0; k--)
a[(j + k) % a.length] = a[(j + k - 1) % a.length];
j = (j + 1) % a.length;
}
else
{
/** shift a[i+1],..,a[n-1] left one position **/
for (int k = i; k < n - 1; k++)
a[(j + k) % a.length] = a[(j + k + 1) % a.length];
}
n--;
if (3 * n < a.length)
resize();
return x;
}
/** function display array deque **/
public void display()
{
System.out.print("\nArray Deque : ");
int p = j;
for (int i = 0; i < n; i++)
{
System.out.print(a[p % a.length] +" ");
p++;
}
System.out.println();
}
}
/** Class ArrayDequeTest **/
public class ArrayDequeTest
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("Array Deque Test\n");
ArrayDeque ad = new ArrayDeque();
char ch;
/* Perform Array Deque operations */
do
{
System.out.println("\nArray Deque Operations\n");
System.out.println("1. add");
System.out.println("2. get");
System.out.println("3. set");
System.out.println("4. remove");
System.out.println("5. check empty");
System.out.println("6. clear");
System.out.println("7. size");
int choice = scan.nextInt();
switch (choice)
{
case 1 :
System.out.println("Enter index and element");
ad.add(scan.nextInt(), scan.nextInt() );
break;
case 2 :
System.out.println("Enter index");
System.out.println("Result : "+ ad.get(scan.nextInt() ));
break;
case 3 :
System.out.println("Enter index and element");
ad.set(scan.nextInt(), scan.nextInt() );
break;
case 4 :
System.out.println("\nEnter index");
ad.remove(scan.nextInt() );
break;
case 5 :
System.out.println("\nEmpty Status : "+ ad.isEmpty());
break;
case 6 :
System.out.println("\nArray Deque Cleared");
ad.clear();
break;
case 7 :
System.out.println("\nSize = "+ ad.getSize() );
break;
default :
System.out.println("Wrong Entry \n ");
break;
}
/** print array deque **/
ad.display();
System.out.println("\nDo you want to continue (Type y or n) \n");
ch = scan.next().charAt(0);
}
while (ch == 'Y'|| ch == 'y');
}
}
/*
Array Deque Operations
1. add
2. get
3. set
4. remove
5. check empty
6. clear
7. size
5
Empty Status : true
Array Deque :
Do you want to continue (Type y or n)
y
Array Deque Operations
1. add
2. get
3. set
4. remove
5. check empty
6. clear
7. size
1
Enter index and element
0 1
Array Deque : 1
Do you want to continue (Type y or n)
y
Array Deque Operations
1. add
2. get
3. set
4. remove
5. check empty
6. clear
7. size
1
Enter index and element
1 2
Array Deque : 1 2
Do you want to continue (Type y or n)
y
Array Deque Operations
1. add
2. get
3. set
4. remove
5. check empty
6. clear
7. size
1
Enter index and element
2 3
Array Deque : 1 2 3
Do you want to continue (Type y or n)
y
Array Deque Operations
1. add
2. get
3. set
4. remove
5. check empty
6. clear
7. size
1
Enter index and element
3 4
Array Deque : 1 2 3 4
Do you want to continue (Type y or n)
y
Array Deque Operations
1. add
2. get
3. set
4. remove
5. check empty
6. clear
7. size
1
Enter index and element
4 5
Array Deque : 1 2 3 4 5
Do you want to continue (Type y or n)
y
Array Deque Operations
1. add
2. get
3. set
4. remove
5. check empty
6. clear
7. size
1
Enter index and element
5 6
Array Deque : 1 2 3 4 5 6
Do you want to continue (Type y or n)
y
Array Deque Operations
1. add
2. get
3. set
4. remove
5. check empty
6. clear
7. size
1
Enter index and element
6 7
Array Deque : 1 2 3 4 5 6 7
Do you want to continue (Type y or n)
y
Array Deque Operations
1. add
2. get
3. set
4. remove
5. check empty
6. clear
7. size
1
Enter index and element
7 8
Array Deque : 1 2 3 4 5 6 7 8
Do you want to continue (Type y or n)
y
Array Deque Operations
1. add
2. get
3. set
4. remove
5. check empty
6. clear
7. size
7
Size = 8
Array Deque : 1 2 3 4 5 6 7 8
Do you want to continue (Type y or n)
y
Array Deque Operations
1. add
2. get
3. set
4. remove
5. check empty
6. clear
7. size
4
Enter index
2
Array Deque : 1 2 4 5 6 7 8
Do you want to continue (Type y or n)
y
Array Deque Operations
1. add
2. get
3. set
4. remove
5. check empty
6. clear
7. size
1
Enter index and element
4 24
Array Deque : 1 2 4 5 24 6 7 8
Do you want to continue (Type y or n)
y
Array Deque Operations
1. add
2. get
3. set
4. remove
5. check empty
6. clear
7. size
1
Enter index and element
3 25
Array Deque : 1 2 4 25 5 24 6 7 8
Do you want to continue (Type y or n)
y
Array Deque Operations
1. add
2. get
3. set
4. remove
5. check empty
6. clear
7. size
1
Enter index and element
4 26
Array Deque : 1 2 4 25 26 5 24 6 7 8
Do you want to continue (Type y or n)
y
Array Deque Operations
1. add
2. get
3. set
4. remove
5. check empty
6. clear
7. size
7
Size = 10
Array Deque : 1 2 4 25 26 5 24 6 7 8
Do you want to continue (Type y or n)
y
Array Deque Operations
1. add
2. get
3. set
4. remove
5. check empty
6. clear
7. size
2
Enter index
6
Result : 24
Array Deque : 1 2 4 25 26 5 24 6 7 8
Do you want to continue (Type y or n)
y
Array Deque Operations
1. add
2. get
3. set
4. remove
5. check empty
6. clear
7. size
3
Enter index and element
3 28
Array Deque : 1 2 4 28 26 5 24 6 7 8
Do you want to continue (Type y or n)
y
Array Deque Operations
1. add
2. get
3. set
4. remove
5. check empty
6. clear
7. size
7
Size = 10
Array Deque : 1 2 4 28 26 5 24 6 7 8
Do you want to continue (Type y or n)
y
Array Deque Operations
1. add
2. get
3. set
4. remove
5. check empty
6. clear
7. size
6
Array Deque Cleared
Array Deque :
Do you want to continue (Type y or n)
y
Array Deque Operations
1. add
2. get
3. set
4. remove
5. check empty
6. clear
7. size
5
Empty Status : true
Array Deque :
Do you want to continue (Type y or n)
n