1.入队列时,将元素放入栈s1
2.出队列时,如果栈s2不为空,则直接将s2栈顶元素出栈;如果s2为空,则将s1所有元素出栈并放入s2,最后将s2栈顶元素出栈
package me.wcy.j2se.datastructure;
import java.util.Stack;
/**
* 两个栈实现一个队列
*
* @author chenyan.wang
*
* @param <E>
*/
public class MyQueue<E> {
public static void main(String[] args) {
MyQueue<Integer> queue = new MyQueue<>();
queue.add(1);
queue.add(2);
System.out.println("队列首元素:" + queue.poll());
System.out.println("队列首元素:" + queue.poll());
}
private Stack<E> s1;
private Stack<E> s2;
public MyQueue() {
s1 = new Stack<>();
s2 = new Stack<>();
}
public void add(E e) {
s1.push(e);
}
public E poll() {
if (s2.size() == 0) {
while (!s1.isEmpty()) {
s2.push(s1.pop());
}
}
return s2.pop();
}
public boolean isEmpty() {
return s1.isEmpty() && s2.isEmpty();
}
}
输出:
队列首元素:1
队列首元素:2