📜  门|门 IT 2007 |第 30 题

📅  最后修改于: 2021-09-25 05:09:42             🧑  作者: Mango

假设你有一个整数队列的实现。可以对队列执行的操作有:一世。 isEmpty (Q) — 如果队列为空,则返回 true,否则返回 false。 ii. delete (Q) — 删除队列前面的元素并返回其值。三、 insert (Q, i) — 在队列尾部插入整数 i。考虑以下函数:

void f (queue Q) {
int i ;
if (!isEmpty(Q)) {
   i = delete(Q);
   f(Q);
   insert(Q, i);
  }
}

上述函数f 执行了什么操作?
(A)保持队列 Q 不变
(B)颠倒队列Q中元素的顺序
(C)删除队列 Q 前面的元素并在后面插入它,保持其他元素的顺序相同
(D)清空队列 Q

答案:(乙)
说明:由于是递归调用,从末尾插入时从前面删除,这意味着最后一个元素将被删除,并将插入新队列的一个元素。这样它会一直持续到第一次调用执行 insert(Q,i)函数。
因此,队列将反向。这个问题的测验