📜  门| Gate IT 2007 |问题30

📅  最后修改于: 2021-06-29 05:36:29             🧑  作者: Mango

假设您获得了一个整数队列的实现。可以在队列上执行的操作是:一世。 isEmpty(Q)-如果队列为空,则返回true,否则返回false。 ii。 delete(Q)-删除队列前面的元素并返回其值。 iii。 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

答案: (B)
说明:由于它是递归调用,并且从正面除去而从端插入,这意味着最后一个元素将在最后被删除,并且在新的队列将被插入1。这样,它将一直持续到第一个调用执行insert(Q,i) 函数为止。
因此,队列将相反。这个问题的测验