阅读背景:

cc150:使用两个栈实现一个队列(两种方法比较)

来源:互联网 
对于上面的实现,我们可以稍作改进来提高效率。上面的实现方法, 数据在两个栈之间移动得太频繁了,必然会导致效率下降。事实上有些移动是没有必要的。 有数据进入队列时,我们不去管第二个栈是否有数据,只管往第一个栈压栈即可。 当数据出队列时,如果第二个栈有数据,那就出栈。 因为此时第二个栈的栈顶元素即为队列的队首元素;如果第二个栈没有数据, 这才将第一个栈的数据出栈移动到第二个栈,然后第二个栈再出栈。这样一来, 逻辑上相当于将一个队列从中间切开,第一个栈从栈顶到栈底对应队列的队尾到切开处, 第二个栈从栈顶到栈底对应队列的队首到切开处。这样简单的修改, 可以减少许多不必要的数据移动,提高效率。对于上面的实现,我们可以稍作改进来提高效率。上面的实现方法, 数据在两个栈之间移动得太频繁了,必然会


你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: