首页 > 代码库 > 用两个stack设计一个队列

用两个stack设计一个队列

 

思路:用两个栈,一个用于接收(in),一个用于输出(out),输出前如果out为空需要将in中的数据导入out。

 

import java.util.Stack;//用两个stack设计一个队列 p142public class MyQueue<T> {    Stack<T> in;    Stack<T> out;    public MyQueue() {        in = new Stack<T>();        out = new Stack<T>();    }    public void enqueue(T a) {        in.push(a);    }    public T dequeue() {        shiftItems();        return out.pop();    }    public T peek() {        shiftItems();        return out.peek();    }    private void shiftItems() {        if (!out.isEmpty())            return;        while (!in.isEmpty()) {            out.push(in.pop());        }    }    public static void main(String[] args) {        MyQueue<Integer> queue = new MyQueue<Integer>();        queue.enqueue(1);        queue.enqueue(2);        queue.enqueue(3);        System.out.println(queue.dequeue());        queue.enqueue(4);        System.out.println(queue.dequeue());        System.out.println(queue.dequeue());        System.out.println(queue.dequeue());    }}