首页 > 代码库 > 两个栈实现队列

两个栈实现队列

题目很简单,今天看了下Java泛型的东西,用泛型改写了一下:

package com.wy.oj;import java.util.Stack;/** * Created by wy on 2016/12/23 023. */public class TwoStackQueue<T> {    private Stack<T> s1 = new Stack<>(); // 入队    private Stack<T> s2 = new Stack<>(); // 出队    public T pop() {        if (isEmpty()) return null;        if (!s2.isEmpty()) return s2.pop();        else {            while (!s1.isEmpty())                s2.push(s1.pop());            return s2.pop();        }    }    public void push(T item) {        s1.push(item);    }    public int size() {        return s1.size() + s2.size();    }    public boolean isEmpty() {        return (s1.isEmpty() && s2.isEmpty());    }    // 测试    public static void main(String[] args) {        TwoStackQueue<String> qs = new TwoStackQueue<>();        for (String s : "qing li si nian chun".split(" "))            qs.push(s);        for (int i=0; i<3; ++i)            System.out.println(qs.pop());        System.out.println();        for (String s : "ten zi jing".split(" "))            qs.push(s);        while (!qs.isEmpty())            System.out.println(qs.pop());        TwoStackQueue<Integer> qi = new TwoStackQueue<>();        for (int i=10; i<100; i=2*i)            qi.push(i);        while (!qi.isEmpty())            System.out.println(qi.pop());    }}

  

两个栈实现队列