Это программа очереди? - PullRequest
0 голосов
/ 07 мая 2020

Это то, что я сделал: -

class Queue{
static Scanner in=new Scanner(System.in);

static int arr[];

static int front=0,rear=0;

Queue(int n)
{
    arr=new int[n];
}

static void main()
{
    System.out.println("Enter Size of Queue:");
    int n=in.nextInt();
    char a;
    Queue ob=new Queue(n);
    boolean flag=true;
    while(flag==true)
    {
        System.out.println();
        System.out.println("Enter I to insert element.");
        System.out.println("Enter D to delete element.");
        System.out.println("Enter P to print Queue.");
        System.out.println("Enter T to terminate.");
        System.out.println();
        a=Character.toUpperCase(in.next().charAt(0));
        System.out.println();
        switch(a)
        {
            case 'I':
            {
                System.out.println("Enter element to add to queue:");
                ob.enterNum(in.nextInt());
            }
            break;
            case 'D':
            {
                ob.exitNum();
            }
            break;
            case 'P':
            {
                System.out.print("Queue Contents ---> ");
                ob.printQueue();
            }
            break;
            case 'T':
            {
                flag=false;
            }
        }
    }
    System.out.println("Progarm terminated.");
}

void exitNum()
{
    /*
     * Step 1: Here, we first check if there is any element to delete.
     *         If there are more than zero elements, then we delete the 
     *         first element, i.e,arr[front] .
     * 
     * Step 2: After deleting this element we have to shift every element,
     *         forward one position. Thus, now rear will get reduced by one, i.e rear--.
     */
    if(front==rear)
        System.out.println("Queue is empty.");
    else
    {
        System.out.println(arr[front]+" was deleted.");
        shiftElements();
        rear--;
    }
}

void enterNum(int data)
{
    /*
     * Step 1: Here, we first check if there is any room to add a number.
     *         i.e, if rear<arr.length
     *         
     * 
     * Step 2: If there is, then we add the 
     *         element to rear, i.e,arr[rear] .
     *         After adding this element we increment rear.        
     */
    if(rear==arr.length)
        System.out.println("Queue is full.");
    else
    {
        arr[rear]=data;
        rear++;
        System.out.println(data+" was added at the last successfully.");
    }
}

void printQueue()
{
    if(front==rear)
        System.out.println("Queue is empty.");
    else
        for(int i=0;i<arr.length;i++)
            if(arr[i]!=-999999)
                System.out.print(arr[i]+" ");
    System.out.println();
}

void shiftElements()
{
    int j=0;
    for(int i=1;i<rear;i++)
    {
        arr[j]=arr[i];
        arr[i]=-999999;
        j++;
    }
}

Это то, что предлагает мой учитель:

class queue{{
int q[];

int size,front,rear;

queue(int s)
{
    q=new int[s];
    size=s;
    front=-1;
    rear=-1;
}

void insert(int num)
{
    if(rear==size-1)
    {
        System.out.println("QUEUE IS FULL");
    }
    else if((front==-1)&&(rear==-1))
    {
        front++;
        rear++;
        q[rear]=num;
    }
    else
    {
        rear++;
        q[rear]=num;
    }
}

int delete()
{
    if(front==-1&&rear==-1)
    {
        System.out.println("QUEUE EMPTY");
        return -999;
    }
    else
    {
        int n=q[front];
        if(front==rear)
        {
            front=-1;
            rear=-1;
        }
        else
        {
            front++;
        }
        return n;
    }
}

void display()
{
    for(int i=front;i<=rear;i++)
    {
        if(front==(rear+1))
        {
            System.out.println("OVER");
        }
        else
        {
            System.out.println(q[i]+" ");
        }
    }
}}}

Может ли кто-нибудь проверить вывод и убедиться, что это программа очереди? Мой учитель говорит, что моя программа с циклической очередью.

Правильный ли этот вывод для программы очереди?

PU SH 10 PU SH 20 PU SH 30

ОЧЕРЕДЬ ---> 10 20 30

POP

QUEUE ---> 20 30

PU SH 40

QUEUE - -. 20 30 40

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...