** * By returnZhang * 两个队列组成栈 * stackIn 压入数据 * stackOut 反转数据 */ public class StackToList { Stack<Integer> stackIn;//数据栈 Stack<Integer> stackOut;//反转栈 public StackToList(){ stackIn=new Stack<>(); stackOut=new Stack<>(); } //压入数据 public void add(Integer num){ stackIn.push(num); } //弹出数据,反转栈有数据则直接弹出数据,没有则把压入数据的栈反转 public Integer poll() throws Exception { //如果反转栈有数据则直接弹出 if(!stackOut.isEmpty()){ return stackOut.pop(); }else{ //反转栈没有数据则把数据站数据依次压入反转栈 //空检测 if(stackIn.isEmpty()){ throw new Exception("there is nothing to do"); } // while (!stackIn.isEmpty()){ stackOut.push(stackIn.pop()); } } return stackOut.pop(); } }
ps:感谢左程云老师的 程序员代码面试指南
本文介绍了一种使用两个队列实现栈的数据结构方法。通过一个队列进行数据压入,另一个队列实现数据弹出时的反转操作。当弹出数据时,若反转队列为空,则将压入队列的所有元素依次压入反转队列完成反转。
7390

被折叠的 条评论
为什么被折叠?



