8.7:如何用队列结构实现栈结构
8.7:如何用队列结构实现栈结构
1 public static class TwoQueueStack<T> {
2
3 public Queue<T> queue;
4 public Queue<T> help;
5
6 public TwoQueueStack() {
7 queue = new LinkedList<>(); //队列的实现是链表
8 help = new LinkedList<>();
9 }
10
11
12 //往队列中加数
13 public void push(T value) {
14 queue.offer(value);
15 }
16
17 //poll队列中出数,但必须是栈的形式,先进的后出。
18 public T poll() {
19 while (queue.size() > 1) { //queue有两个以上的数时
20 help.offer(queue.poll()); //将queue中的数,挨个拿出放熬help队列中
21 }
22 T ans = queue.poll(); //while走完,queue中只剩1个元素,也就是最后进的那个,弹出
23 Queue<T> tmp = queue; //搞个中间队列tmp
24 queue = help; //队列交换
25 help = tmp;
26 return ans; //返回ans
27 }
28
29 public T peek() {
30 while (queue.size() > 1) {
31 help.offer(queue.poll());
32 }
33 T ans = queue.poll();
34 help.offer(ans);
35 Queue<T> tmp = queue;
36 queue = help;
37 help = tmp;
38 return ans;
39 }
40
41 public boolean isEmpty() {
42 return queue.isEmpty();
43 }
44
45 }