这个是一个很常见的算法,在剑指offer中有详细的讲解,在这里提供一种优化的实现。该实现的优势是不须要每次在数据出列时,将数据copy到另外一个堆栈中。并写了其对应的单元测试。java
主要实现是在类中定义了两个全局变量,标明当前队列中两个栈的状态,git
在向对列中添加顺序时,若是inOrder = false 则能够直接添加,不然就要将数据导到另外一个栈中,而后将数据添加到有数据的栈中。在从队列中移除数据时,若是inOrder=true 则存储数据的栈直接将数据弹出便可,不然将数据导入到另外一个栈再将数据弹出。github
PS:代码在超连接中。算法