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

📅  最后修改于: 2021-09-08 15:02:02             🧑  作者: 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 顺序,队列中的所有项目都被反转。