如何用两个栈实现一个队列

如何用两个栈实现一个队列如何实现使用两个栈实现一个队列呢 这里主要还是自己的思想问题 在这里我们首先整理一下自己的思维 1 首先准备两个栈 栈 A 与栈 B2 栈 A 专门用来完成入队列操作 栈 B 专门用来出队列与取队首元素操作 3 每次入队列操作时 首先得判断 B 栈是否为空 不空则将 B 栈元素全都依次入 A 栈 最后继续入新元素 即将要入栈元素添加到栈 A 4 每次出队列与取队首元素操作时 将 A 栈中的元素依次入 B 栈 出队列即取出 B 栈中的元素 取队首元素即取 B 栈栈顶元素即可 importjava util Stack public

如何实现使用两个栈实现一个队列呢?这里主要还是自己的思想问题,在这里我们首先整理一下自己的思维:

 import java.util.Stack; public class MyQueueByStack { //先创建两个栈 private Stack<Integer> A = new Stack<>(); //用来入队列 private Stack<Integer> B = new Stack<>(); //用来出队列 public void push(int val) { //入队列 // 如果栈B不为空,先将B中的元素倒腾到栈A while (!B.isEmpty()) { int tmp = B.pop(); A.push(tmp); } //接着入栈只需将元素放入栈A A.push(val); } public Integer pop() { //出队列 if (empty()) { return null; //如果队列为空(即AB栈都为空)直接返回null } while (!A.isEmpty()) { //当A栈不为空,将A中的元素倒腾到B int tmp = A.pop(); B.push(tmp); } return B.pop(); //直接返回B的出栈元素,即为出队列的元素 } public Integer peek() { //取队首元素 if (empty()) { return null; //如果队列为空(即AB栈都为空)直接返回null } while (!A.isEmpty()) { //当A栈不为空,将A中的元素倒腾到B int tmp = A.pop(); B.push(tmp); } return B.peek(); //直接返回B的栈顶元素,即为出队列的栈顶元素 } public boolean empty() { return A.isEmpty() && B.isEmpty(); //如果AB栈都为空则表示队列为空 } public static void main(String[] args) { MyQueueByStack queue = new MyQueueByStack(); queue.push(1); queue.push(2); queue.push(3); queue.push(4); System.out.println(queue.peek()); System.out.println(queue.pop()); System.out.println(queue.pop()); // System.out.println(queue.peek()); System.out.println(queue.pop()); System.out.println(queue.pop()); } }

这里的参考链接:参考自 https://blog.csdn.net/_/article/details/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232373.html原文链接:https://javaforall.net

(0)
上一篇 2025年10月15日 上午10:01
下一篇 2025年10月15日 上午10:22


相关推荐

  • nginx 实现动静分离访问项目资源

    nginx 实现动静分离访问项目资源nginx动静分离访问可以将一些css,js,img,html等一些静态资源没必要去让tomcat去加载好处是减少tomcat压力,提高响应速度,让tomcat只去处理跟数据库打交道的请求项目结构(图片) 1页面图片展示  2nginx.confg配置  #设置tomcat集群 upstreamlocal{ #i…

    2022年5月29日
    32
  • 从高考落榜生到网络专家

    从高考落榜生到网络专家成功的背后,有着许多不为人知的故事,而正是这些夹杂着泪水和汗水的过去,才成就了一个个走 向成功的普通人——凌晨两点半,早已习惯了一个人坐在电脑前的我,望着屏幕,任思绪在暗夜的包容 下静静流淌,时光仿佛又定格在三年多前的那一刻:“283分”。那是被中国万千学子称为“黑色七 月”中的一天,下班回家的母亲从家门打开后说出的一个数字,虽然早知道自己不会考上大学,但如此 的成绩也多少出乎自己

    2025年8月22日
    4
  • notify() 和 notifyAll() 有什么区别?「建议收藏」

    notify() 和 notifyAll() 有什么区别?「建议收藏」notify()和notifyAll()有什么区别?先解释两个概念。等待池:假设一个线程A调用了某个对象的wait()方法,线程A就会释放该对象的锁后,进入到了该对象的等待池,等待池中的线程不会去竞争该对象的锁。 锁池:只有获取了对象的锁,线程才能执行对象的synchronized代码,对象的锁每次只有一个线程可以获得,其他线程只能在锁池中等待区别:notify()…

    2025年10月8日
    5
  • HDU 3715 Go Deeper(2-sat)

    HDU 3715 Go Deeper(2-sat)

    2022年1月12日
    49
  • 前端盲水印_前端代码review

    前端盲水印_前端代码review需求给图片加上看不到的水印,当通过其他的方式可以清楚的看到图片中暗藏的水印,以此方式追溯到泄密的人解决办法利用canvas实现图片和水印的绘制,具体过程如下:新建canvas,宽度和高度取要加水印的图片的宽度和高度 在该canvas上绘制要添加的水印文字,文字透明度设置要特别的低,但是当水印透明度小于等于0.003,不可恢复到水印。所以我们设置透明度要不得低于0.003 将该canvas转成img(为什么canvas要转成img?之前遇到canvas在移动端无法长按出现保存、转发等操作)

    2025年6月23日
    8
  • 向量和矩阵的点乘和叉乘

    向量和矩阵的点乘和叉乘向量定义 向量是由 N 个实数组成的一行 N 列或 N 行一列的的数组 点乘 又叫做点积 内积 数量积 标量积 向量 a a1 a2 an 和向量 b b1 b2b bn 点乘的结果是一个标量 记作 a b 几何解释 a b a b 故而点乘可以计算出两个向量的夹角 且向量垂直 点乘结果为零 叉乘 又叫向量积 外积 叉积 叉乘 向量 a x1 y1 z1 和向量 b x2 y2 z2 叉乘的运算结果是一个向量 并且两个向量的叉积与这两个向量组成的坐标平面垂直 记作 axb 计算方式

    2026年3月19日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号