我有这个显示队列的迭代函数:
void displayQueue(queue *Q){
int temp;
while(!isEmpty(Q)){
temp = dequeue(Q);
printf("%d -> ", temp);
displayQueue(Q);
enqueue(Q, temp);
}
reverse(Q);
}
我想通过删除while循环使其完全递归,这是我到目前为止得到的:
void displayQueue(queue *Q){
if(isEmpty(Q)) return;
int temp = dequeue(Q);
printf("%d -> ", temp);
displayQueue(Q);
enqueue(Q, temp);
}
问题是何时调用“reverse(Q)”函数,该函数必须在函数返回时在打印结束时调用,但此时 Q 为空,因此不会被反转(队列的打印导致其反转)
这是我的队列结构:
typedef struct queue{
unsigned capacity;
int size;
int front;
int rear;
int *array;
}queue;