9用两个队列实现一个栈
Posted wangAQS
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了9用两个队列实现一个栈相关的知识,希望对你有一定的参考价值。
现在有一个A队列和一个B队列。
(1)入栈操作,判断A队列是否有元素,若A队列有元素,则元素直接入A队列;若没有,则将元素入B队列;
(2)出栈操作,若A和B都没有元素,则出栈失败;
判断A是否有元素,若A有元素,则获取A元素的个数N,将前N-1个元素出队并进入B队列,最后一个元素即为出栈元素;
如果A中没有元素,则对B执行上述操作。
第二种解法:
A队列永远作为空队列,B队列存放元素
(1)入栈操作:将元素进入A队列,然后将B中的元素循环出队并进入A队列,将A和B队列引用交换,保证A依然为空队列;
(2)出队操作:从B中弹出元素即可。
class MyStack { private Queue<Integer> a;//输入队列 private Queue<Integer> b;//输出队列 public MyStack() { a = new LinkedList<>(); b = new LinkedList<>(); } public void push(int x) { a.offer(x); // 将b队列中元素全部转给a队列 while(!b.isEmpty()) a.offer(b.poll()); // 交换a和b,使得a队列没有 在push()的时候始终为空队列 Queue temp = a; a = b; b = temp; } public int pop() { return b.poll(); } public int top() { return b.peek(); } public boolean empty() { return b.isEmpty(); } }
以上是关于9用两个队列实现一个栈的主要内容,如果未能解决你的问题,请参考以下文章