算法思想:采用Java内置的Stack来实现模拟队列操作,其中一个栈用于入队,另一个栈用于出队。
代码如下:
package com.haobi;
import java.util.Stack;
/*
* 如何用两个栈模拟队列操作(采用Java内置的Stack来实现)
*/
public class MyQueue2<E> {
private Stack<E> s1 = new Stack<E>();
private Stack<E> s2 = new Stack<E>();
//入队
public synchronized void put(E e) {
s1.push(e);
}
//出队
public synchronized E pop() {
if(s2.isEmpty()) {
while(!s1.isEmpty())
s2.push(s1.pop());
}
return s2.pop();
}
//判空
public synchronized boolean empty() {
return s1.isEmpty()&&s2.isEmpty();
}
public static void main(String[] args) {
MyQueue2<Integer> q = new MyQueue2<Integer>();
q.put(1);
q.put(2);
q.put(3);
System.out.println("队列首元素:"+q.pop());
System.out.println("队列首元素:"+q.pop());
}
}
程序输出结果如下:
队列首元素:1
队列首元素:2