Wednesday, 29 November 2017

Java Program to implement Array Deque


Code:

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');  
    }
}


Output:

Array Deque Test


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


More Java Programs:

















100+ Best Home Decoration Ideas For Christmas Day 2019 To Make Home Beautiful

Best gifts for Christmas Day | Greeting cards for Christmas Day | Gift your children a new gift on Christmas day This Christmas d...