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     }

 

posted @ 2022-05-09 14:21  yzmarcus  阅读(17)  评论(0编辑  收藏  举报