我们如何在下面提到的代码中打印循环队列。 队列已满后,我们删除一个项目并插入下一个项目,该项目位于索引0。 那我们怎么打印呢? 我们如何在下面提到的代码中打印循环队列。
class GQueue <T extends Object>
{
T[] arr;
int size;
int front;
int rear;
int length;
GQueue(int size)
{
this.size=size;
arr=(T[])new Object[this.size];
front=-1;
rear=-1;
length=arr.length;
}
void EnQueue(T data)
{
if(isFull())
{
System.out.println("Queue full");
return;
}
else if(isEmpty())
front=rear=0;
else
rear = (rear+1)%length;
arr[rear]=data;
}
void DeQueue()
{
if(isEmpty())
return;
else if (front==rear)
{
front=rear=-1;
}
else
front=(front+1)%length;
}
T peek()
{
return arr[front];
}
boolean isEmpty()
{
if(front==-1 && rear==-1)
return true;
else
return false;
}
boolean isFull()
{
if( (rear+1) % length==front)
return true;
else
return false;
}
void print()
{
for(int i=front;i<=rear;i++)
{
System.out.print(arr[i]+" ");
}
System.out.println();
}
}
public class GenericQueue {
public static void main(String[] args) {
GQueue<Integer> gq = new GQueue<Integer>(10);
gq.EnQueue(1);
gq.EnQueue(2);
gq.EnQueue(3);
gq.EnQueue(4);
gq.EnQueue(5);
gq.EnQueue(6);
gq.EnQueue(7);
gq.EnQueue(8);
gq.EnQueue(9);
gq.EnQueue(10);
gq.print();
gq.DeQueue();
gq.EnQueue(11);
gq.print();
}
}
答案 0 :(得分:0)
gradleVersion = '2.12'
未经测试,但我认为这是正确的,或者至少提供了一般性的想法。
答案 1 :(得分:0)
只需使用while(我在上面的代码中,以避免再次打印System.out.print(“”+ arr [rear])。
答案 2 :(得分:0)
您可以尝试使用此代码!
for(int i=front+1 ; i!=(rear+1) ; i=(i+1)%arr.length)
{
System.out.println(" "+arr[i]);
}
答案 3 :(得分:0)
对于那些寻找打印循环队列的人来说,接受的答案在两种情况下都失败了:
这是修改后的版本看看:
假设队列中只有一个条目 10
int[] queue = new int[5]
queue = {10,0,0,0,0}
front = 0;
rear = 0;
接受的答案输出将是:
10,0,0,0,0
我们需要检查何时休息,即一旦我们到达后方位置。
要获得正确的结果,请使用以下内容:
public void print() {
if (!empty()) {
int i = front;
do {
System.out.println(arr[i]);
if(i==rear)
break;
i = (i + 1) % (arr.length);
} while (i != front);
}
}
现在您的输出将是:
10
另请注意,我们正在迭代while (i != front)
这允许我们打印最后一个元素。
答案 4 :(得分:0)
有两种情况:
front == 0&Rear> = front
后部<前部
对于情况1 :(如果)
- 检查后方> =前
- 从前到后迭代i并打印
对于情况2 :(其他)
- 从前到队列末尾迭代i,例如(Size-1)
- 打印阵列!
- 再次将i从0迭代到后方并打印数组
答案 5 :(得分:0)
正确的遮篷是:
void print(){
if (!isEmpty()) {
int i = front;
do {
System.out.print(" " + arr[i]);
i = ++i % arr.length;
} while (i != rear);
if (front != rear) {
System.out.print(" " + arr[rear]);
}
}
}