下面给出了使用两个堆栈 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 是进程中分别执行的 push 和 pop 操作的数量。以下哪一项对所有 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答案:(一)
说明:同 https://www.geeksforgeeks.org/data-structures-queue-question-10/
这个问题的测验