队列实现栈

68 阅读1分钟
压入:将元素放进有元素的队列中
弹出:将有元素的队列全部移除到没有元素的队列中,获取最后一个元素
public class StackByQueue<T> {

    private LinkedList<T> queue1 = new LinkedList<>();
    private LinkedList<T> queue2 = new LinkedList<>();

    public void push(T t) {
        if (!queue1.isEmpty()) {
            queue1.add(t);
        } else {
            queue2.add(t);
        }

    }

    public T pop() {
        if (queue1.isEmpty() && queue2.isEmpty()) {
            return null;
        }
        if (!queue1.isEmpty()) {
            while (queue1.size() > 1) {
                T e = queue1.remove();
                queue2.add(e);
            }
            return queue1.remove();
        } else {
            while (queue2.size() > 1) {
                T e = queue2.remove();
                queue1.add(e);
            }
            return queue2.remove();
        }
    }

    public static void main(String[] args) {
        StackByQueue<Integer> stackByQueue = new StackByQueue<Integer>();
        int i;
        for (i = 1; i < 5; i++) {
            stackByQueue.push(i);
        }
        for (i = 1; i < 6; i++) {
            System.out.println(stackByQueue.pop());
        }
        stackByQueue.push(9);
        stackByQueue.push(10);
        System.out.println(stackByQueue.pop());
        System.out.println(stackByQueue.pop());
        System.out.println(stackByQueue.pop());
    }