美文网首页
使用栈实现队列

使用栈实现队列

作者: 雨落千木的时节 | 来源:发表于2018-10-23 17:02 被阅读0次

    思路: 思路比较简单,使用两个栈,一个栈A负责入队,一个栈B负责出队,出队的时候,先判断栈B的元素是否为空,如果为空则将栈A的元素全部出栈放入栈B中,然后栈B元素出栈

    代码:

    package com.buka.designer.statkqueue;
    
    import java.util.Stack;
    
    /**
    
    *  用栈实现队列
    
    */
    
    public class StackQueue {
    
        private Stack<Integer> stackA = new Stack<>();
    
        private Stack<Integer> stackB = new Stack<>();
    
        /**
    
        * 入队操作
    
        */
    
        public void enQueue(int item) {
    
            stackA.push(item);
    
        }
    
        /**
    
        * 出队操作
    
        *
    
        */
    
        public Integer deQueue() {
    
            if (stackB.isEmpty()) {
    
                if (stackA.isEmpty()) {
    
                    return null;
    
                }
    
                transfer();
    
            }
    
            return stackB.pop();
    
        }
    
        /**
    
        * 转换
    
        */
    
        public void transfer () {
    
            while (!stackA.isEmpty()) {
    
                stackB.push(stackA.pop());
    
            }
    
        }
    
        public static void main(String[] args) {
    
            StackQueue stackQueue = new StackQueue();
    
            stackQueue.enQueue(1);
    
            stackQueue.enQueue(2);
    
            stackQueue.enQueue(3);
    
            stackQueue.enQueue(4);
    
            System.out.println(stackQueue.deQueue());
    
            System.out.println(stackQueue.deQueue());
    
            stackQueue.enQueue(5);
    
            System.out.println(stackQueue.deQueue());
    
            System.out.println(stackQueue.deQueue());
    
            System.out.println(stackQueue.deQueue());
    
            System.out.println(stackQueue.deQueue());
    
        }
    
    }
    

    相关文章

      网友评论

          本文标题:使用栈实现队列

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