假设你有一个整数队列的实现。可以对队列执行的操作有:一世。 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)函数。
因此,队列将反向。这个问题的测验