一、两个队列实现一个栈
实现方法:两个队列一个用作工作队列,另一个用作临时队列。
插入数据:将该数据插入到工作队列队尾;
弹出数据:首先将工作队列的前n-1个元素弹出到临时队列中,并返回最后一个元素,实现栈“后进先出”的功能。最后临时队列变为工作队列,工作队列变为临时队列,任务完成。
public class TwoQueue2Stack<T> {
private Queue<T> queue1;
private Queue<T> queue2;
boolean flag;
public TwoQueue2Stack() {
queue1 = new LinkedList<>();
queue2 = new LinkedList<>();
flag = true;
}
public void push(T t) {
if(flag) {
queue1.add(t);
} else {
queue2.add(t);
}
}
public T pop() {
if(flag) {
return getT(queue1, queue2);
} else {
return getT(queue2, queue1);
}
}
private T getT(Queue<T> queue2, Queue<T> queue1) {
if(queue2.size() == 0) {
return null;
}