思路分析:
栈,先进后出;队列,先进先出;用一个栈存储先进来的数据,然后将这个栈全部POP(出栈)到第二个栈中,此时第二个栈的顺序便是理想的出栈顺序。简单来说就是一个栈用来做输入,一个栈用来做输出。如下图:
下面进行可以实现的最大容量讨论:
假设栈1(s1)的容量为O,栈2(s2)的容量为P,并且(O>P),用s1来做存储栈,s2来做输出栈;那么首先s1中push(入栈)p个元素,然后s1全都POP(出栈),push进s2(此时s2满);然后入队操作,因为O>P,所以O起码>=P+1,此时s1最多再pop进p+1个元素,s2中的p个元素全都POP后,再将s1中的p个元素push进s2,要注意的是,此时出队的话,为了保证队的先进先出原则,必须是s1中的第p+1元素POP,然后才是s2中的元素依次POP,这样就实现了最大的队列容量。