1、简述
代码复用是工程开发中经常用到的,本系列文章也一直致力于使用代码复用,但是要保证所实现的数据结构与算法在各方面都能达到“产品级别的代码”,即向外保持一致的接口,屏蔽内部实现的细节,优化内部实现算法的时间复杂度以及空间复杂度!
前面已经使用四种方法实现了队列,有两种使用了代码复用,但时间复杂度方面却不理想,因此又使用了两种不使用代码复用的方法,解决了时间复杂度方面的问题,但是编写起来难免比代码复用麻烦,本篇文章就巧妙的利用栈来实现队列,它的好处在于,既使用了代码复用,又有较好的时间复杂度与空间复杂度!
2、实现原理
如上图所示,利用两个栈,一个用来做入队操作,一个用来做出队操作!
3、实现思路
- 准备两个栈用于实现队列:inStack和outStack
- 当有新元素入队时:将其压入inStack中
- 当需要出队时:
- 当outStack为空时:
- 将inStack中的元素逐一弹出并压入outStack中
- 将outStack的栈顶元素弹出
- 当outStack不为空时:
- 直接将outStack的栈顶元素弹出
- 当outStack为空时:
4、部分源码