下面是一个类似于 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 顺序,队列中的所有项目都被反转。