您的位置:首页 > 其它

用两个栈实现一个队列

2015-10-22 08:27 363 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: