美文网首页
使用两个堆栈实现队列功能

使用两个堆栈实现队列功能

作者: 默之m | 来源:发表于2017-03-19 22:21 被阅读0次

    具体代码如下:
    思路如有错误欢迎指正:


    import java.util.Stack;
    
    /**
     * 使用两个栈实现队列功能
     * 思路: s1 作为入队存储数据的功能
     *       s2 作为中转件,出队时先把s1中数据取出然后加入到s2中,出队之后再返回到s1中。
     * @author miaoqiang
     *
     */
    public class TwoStackForQueue {
        private static Stack<Object> s1,s2;
        static{
            s1 = new Stack<Object>();
            s2 = new Stack<Object>();
        }
        public static boolean inQueue(Object obj){
            return s1.add(obj);
        }
        public static Stack<Object> getQueue(){
            return s1;
        }
        public static Object outQueue(int i){
            for(Object ob:s1){
                s2.add(ob);
            }
            Object res = s2.remove(i);
            s1.clear();
            if(res!=null){
                for(Object ob:s2){
                    s1.add(ob);
                }
            }
            s2.clear();
            return res;
        }
    
        public static void main(String[] args) {
            for(int i=1;i<=10;i++){
                TwoStackForQueue.inQueue("test"+i);
            }
            Stack tem = TwoStackForQueue.getQueue();
            System.out.println(tem);
            for(int i=TwoStackForQueue.getQueue().size()-1;i>=0;i--){
                System.out.println(TwoStackForQueue.getQueue().size());
                TwoStackForQueue.outQueue(i);
                Stack tem2 = TwoStackForQueue.getQueue();
                System.out.println(tem);
            }
    
        }
    }
    
    

    参考资料:
    http://www.cnblogs.com/wanghui9072229/archive/2011/11/22/2259391.html

    相关文章

      网友评论

          本文标题:使用两个堆栈实现队列功能

          本文链接:https://www.haomeiwen.com/subject/gqivnttx.html