Это то, что я сделал: -
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