以下是类似于C的函数伪代码,该函数将Queue作为参数,并使用堆栈S进行处理。
void fun(Queue *Q)
{
Stack S; // Say it creates an empty stack S
// Run while Q is not empty
while (!isEmpty(Q))
{
// deQueue an item from Q and push the dequeued item to S
push(&S, deQueue(Q));
}
// Run while Stack S is not empty
while (!isEmpty(&S))
{
// Pop an item from S and enqueue the poppped item to Q
enQueue(Q, pop(&S));
}
}
上述函数通常有什么作用?
(A)从Q中删除最后一个
(B)保持Q与通话前相同
(C)使Q为空
(D)反转Q答案: (D)
说明:该函数将队列Q作为参数。它使Q的所有项目出队,并将它们推入堆栈S。然后弹出S的所有项目,并将这些项目排队返回Q。由于堆栈是LIFO顺序,因此所有队列的项目都将颠倒。