用两个栈模拟实现一个队列,如果栈的容量分别是O和P(O>P),那么模拟实现的队列最大容量是( )?
A:
2O+1
B:
O+P
C:
2O-1
D:
2P+1
正确答案: | D |
两个栈模拟实现队列_Hey小孩的博客-CSDN博客_两个栈模拟队列
记stack1的容量是O,stack2的容量是P,(O>P),将stack1作为存储空间,stack2作为输出的缓冲空间。 入队: 1、将P个元素push到stack1中; 2、再将该P个元素pop到stack2中;(此时出栈的顺序就是队列前P个元素的出栈顺序) 3、将P+1个元素push到stack1中; 出队: 1、先pop stack2所有元素,然后将P个元素pop到stack2中,再将stack1中剩余的元素pop,然后依次pop出stack2中的元素。 最终实现队列的最大容量是2P+1