下面给出了使用两个堆栈S1和S2的队列Q的实现:
void insert(Q, x) {
push (S1, x);
}
void delete(Q){
if(stack-empty(S2)) then
if(stack-empty(S1)) then {
print(“Q is empty”);
return;
}
else while (!(stack-empty(S1))){
x=pop(S1);
push(S2,x);
}
x=pop(S2);
}
令n插入和m(<= n)删除操作以任意顺序在空队列Q上执行。令x和y为分别在该过程中执行的推入和弹出操作的数量。对于所有m和n,以下哪一项是正确的?
(A) n + m <= x <2n和2m <= y <= n + m
(B) n + m <= x <2n和2m <= y <= 2n
(C) 2m <= x <2n和2m <= y <= n + m
(D) 2m <= x <2n和2m <= y <= 2n答案: (A)
说明:与http://quiz.geeksforgeeks.org/data-structures-queue-question-10/
这个问题的测验