📜  数据结构|队列|问题1

📅  最后修改于: 2021-07-02 13:44:32             🧑  作者: Mango

以下是类似于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顺序,因此所有队列的项目都将颠倒。