Java:如何利用两个栈实现队列

来源:互联网 发布:linux qt usb 编辑:程序博客网 时间:2024/06/08 16:30
设s1为入队栈,s2为出队栈。
入队时,对s1入栈即可。
出队时,要考虑两种情况:
1. 栈s2不为空,则直接弹出s2数据;
2. 栈s2为空,则依次弹出s1数据,放进s2中,再弹出s2数据。
import java.util.Stack;//用连个栈模拟队列操作public class myQueue1<E> {private Stack<E> s1=new Stack<E>();//入队private Stack<E> s2=new Stack<E>();//出队//put()public synchronized void put(E data) {s1.push(data);}//pop()public synchronized E pop() {if(s2.isEmpty()) {return s2.pop();}else {while(!s1.isEmpty()) {s2.push(s1.pop());}return s2.pop();}}//isempty()public synchronized boolean isEmpty() {return s1.isEmpty()&&s2.isEmpty();}}

原创粉丝点击