1.入栈时,将元素放入队列q1
2.出栈时,先将q1中所有元素出队列并放入队列q2,保留q1中最后一个元素,将其输出;然后将q2中所有元素出队列并放回q1
package me.wcy.j2se.datastructure;
import java.util.LinkedList;
import java.util.Queue;
/**
* 两个队列实现一个栈
*
* @author chenyan.wang
*
*/
public class MyStack<E> {
public static void main(String[] args) {
MyStack<Integer> stack = new MyStack<>();
stack.push(1);
stack.push(2);
System.out.println("栈顶元素:" + stack.pop());
System.out.println("栈顶元素:" + stack.pop());
}
private Queue<E> q1;
private Queue<E> q2;
public MyStack() {
q1 = new LinkedList<>();
q2 = new LinkedList<>();
}
public void push(E e) {
q1.add(e);
}
public E pop() {
while (q1.size() > 1) {
q2.add(q1.poll());
}
E e = q1.poll();
while (!q2.isEmpty()) {
q1.add(q2.poll());
}
return e;
}
}
输出:
栈顶元素:2
栈顶元素:1