压入:将元素放进有元素的队列中
弹出:将有元素的队列全部移除到没有元素的队列中,获取最后一个元素
public class StackByQueue<T> {
private LinkedList<T> queue1 = new LinkedList<>();
private LinkedList<T> queue2 = new LinkedList<>();
public void push(T t) {
if (!queue1.isEmpty()) {
queue1.add(t);
} else {
queue2.add(t);
}
}
public T pop() {
if (queue1.isEmpty() && queue2.isEmpty()) {
return null;
}
if (!queue1.isEmpty()) {
while (queue1.size() > 1) {
T e = queue1.remove();
queue2.add(e);
}
return queue1.remove();
} else {
while (queue2.size() > 1) {
T e = queue2.remove();
queue1.add(e);
}
return queue2.remove();
}
}
public static void main(String[] args) {
StackByQueue<Integer> stackByQueue = new StackByQueue<Integer>();
int i;
for (i = 1; i < 5; i++) {
stackByQueue.push(i);
}
for (i = 1; i < 6; i++) {
System.out.println(stackByQueue.pop());
}
stackByQueue.push(9);
stackByQueue.push(10);
System.out.println(stackByQueue.pop());
System.out.println(stackByQueue.pop());
System.out.println(stackByQueue.pop());
}