两个栈模拟实现队列

用两个栈模拟实现一个队列,如果栈的容量分别是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

你可能感兴趣的:(C/C++,算法,模拟队列,栈模拟队列)