Java 如何使用递归打印循环缓冲区(使用数组实现)的元素?
如何递归打印循环队列的元素。有人能帮我修复这个代码段吗Java 如何使用递归打印循环缓冲区(使用数组实现)的元素?,java,recursion,data-structures,Java,Recursion,Data Structures,如何递归打印循环队列的元素。有人能帮我修复这个代码段吗 public void print(int rear){ // f is the front of queue if(rear == f) return; else { print(rear - 1); System.out.println(Queue[rear - 1]); } } 在循环缓冲区中,从前面移除元素并在后面添加元素。 我认为没有必要将re
public void print(int rear){
// f is the front of queue
if(rear == f)
return;
else
{
print(rear - 1);
System.out.println(Queue[rear - 1]);
}
}
在循环缓冲区中,
从前面移除元素
并在后面添加元素
。
我认为没有必要将
rear
指定为print()
方法的参数
相反,您可以实现以下代码
public void print() {
//f -> front and r -> rear
if (f == r) {
return;
}
System.out.println(Q[f]);
f = (f + 1) % N;
print();
}
如果愿意,您不需要将所有元素从队列中移出,只需按上述方式打印即可。
如果希望避免递归,请在print()
块中简单地使其循环
public void print() {
while (f != r) {
System.out.println(Q[f]);
f = (f + 1) % N;
// print(); // no more calling recursion
}
}
注:为供参考,我对排队和退队的实现如下
public void enqueue(Object obj) throws QueueFullException {
if (isFull()) {
// some exception
} else {
Q[r] = obj;
r = (r + 1) % N;
}
}
public Object dequeue() throws QueueEmptyException {
Object item;
if (isEmpty()) {
// some exception
} else {
item = Q[f];
Q[f] = null;
f = (f + 1) % N;
}
return item;
}
请检查我的解决方案,如果它解决了您的问题,我将不胜感激。