找考题网-背景图
问答题

下面是队列QUEUE和栈STACK的主要操作:
QUEUE:(设定每个队列元素的数据类型为Type)
bool isEmpty(QUEUE Q); //判断队列空否,true为空,false不空
bool getFront(QUEUE Q,Type&x); //通过x返回队头元素的值
void enQueue(QUEUE Q,Type x); //将新元素x插入到队列的队尾
void deQueue(Queue Q); //从队列中退出队头元素
STACK:(设定每个栈元素的数据类型与队列相同,为Type)
void initStack(STACK S); //对新创建的栈初始化,置成空栈
bool isEmpty(STACK S); //判断栈空否,true栈空,false不空
void push(STACK S,Type x); //将新元素X进栈
void pop(STACK S); //栈顶元素退栈
bool getTop(STACK S,Type&x); //通过x返回栈顶元素的值
利用以上栈和队列的操作,编写以下针对队列的函数的实现代码(要求非递归实现)。 “逆转”函数void reverse(QUEUE&Q)

【参考答案】

利用队列和栈实现以下算法(要求非递归实现)。
“逆转”函数。将队列中全部元素出队并放进栈里,这样所有元素排列的顺序颠倒。再把栈里的所有元素退出栈并放进队列中,所有元素的排列顺序与当初它们在队列中的排列顺序全部逆转了。
void reverse (QUEUE&Q){
ST......

(↓↓↓ 点击‘点击查看答案’看完整答案 ↓↓↓)