Wednesday, 28 December 2016

Circular Array Queue

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/* Write a program for circular array queue */

package circular_array_queue;

import java.util.Scanner;

/**
 *
 * @author shabhatn
 */

class circular_queue
{
    int queue[];
    int size;
    int front;
    int rear;
    int length;
   
    public circular_queue(int size)
    {
        this.size = size;
        front = -1;
        rear = -1;
        length =0;
        queue = new int[size];
    }
   
    public boolean isEmpty()
    {
        return front==-1;
    }
   
    public boolean isFull()
    {
        return (rear+1)%size==front;
    }
    public void enqueue(int data)
    {
        if(isFull())
        {
            System.out.println("Buddy: you cannot insert mode data");
        }
        else
        {
            if(front==-1)
            {
                front =0;
                rear=0;
                queue[rear] = data;
            }
            else
            {
                rear = (rear+1)%size;
                queue[rear] = data;
            }
        }
         System.out.println("front value"+front+":rear value :"+rear);
        length++;
    }
   
    public int getSize()
    {
        return length;
    }
   
    public void dequeue()
    {
        if(isEmpty())
        {
            System.out.println("Queue is empty");
        }
        else
        {
            int data = queue[front];
            length--;
            System.out.println("Dequeued data--->" + data);
           
            if(front==rear)
            {
                front =-1;
                rear =-1;
            }
            else
            {
                front = (front+1)%size;
            }
        }
       
    }
    public void display()
    {
        char choice;
        Scanner sc = new Scanner(System.in);
       
        char ch;
       
        do
        {
        System.out.println("press 1 to enqueue");
        System.out.println("press 2 to dequeue");
        System.out.println("press 3 to see all inserted data");
        int c = sc.nextInt();
        switch(c)
                {
        case 1:
        do
        {
            System.out.print("Insert data");
            int data = sc.nextInt();
            enqueue(data);
            System.out.print("Do you want to insert more data");
          choice = sc.next().charAt(0);
        }while(choice =='Y'||choice=='y');
        break;
        case 2:
        do
        {
            dequeue();
            System.out.print("Do you want to delete more data");
          choice = sc.next().charAt(0);
        }while(choice =='Y'||choice=='y');
        break;
        case 3:
            if(front>=0)
            {
               
        for(int i=front;i<size && front!=-1;i++)
        {
            System.out.println("-->"+queue[i]);
        }
            }
           if(front>=0&&rear<=front)
            {
       for(int i=0;i<=rear;i++)
        {
            System.out.println("-->"+queue[i]);
        }
               
                }
           
        break;
        default:
        System.out.print("invalid input exit");
            break;
           
                }
        System.out.print("Do you want to go back to menu press y");
         ch = sc.next().charAt(0);
        }while(ch=='Y'||ch=='y');
    }
   
   
}
public class Circular_array_queue {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
       
        System.out.print("Enter the  size of queue");
        Scanner sc = new Scanner(System.in);
        int size = sc.nextInt();
        circular_queue aq = new circular_queue(size);
        aq.display();
        // TODO code application logic here
    }
   
}

No comments:

Post a Comment