国内企业网站模板中国南昌企业网站制作

张小明 2026/1/10 16:53:51
国内企业网站模板,中国南昌企业网站制作,wordpress 搜索用户,成都设计咨询集团官网在 Java 中#xff0c;利用两个队列实现栈的核心思路是通过队列的“先进先出”特性模拟栈的“后进先出”特性#xff1a;始终让一个队列#xff08;记为 queue1#xff09;存储栈的所有元素#xff0c;另一个队列#xff08;记为 queue2#xff09;作为临时中转。以下是…在 Java 中利用两个队列实现栈的核心思路是通过队列的“先进先出”特性模拟栈的“后进先出”特性始终让一个队列记为queue1存储栈的所有元素另一个队列记为queue2作为临时中转。以下是完整的实现思路和代码示例核心原理入栈push直接将元素添加到主队列queue1。出栈pop将queue1中除最后一个元素外的所有元素依次转移到queue2弹出queue1中剩余的最后一个元素即栈顶元素然后交换queue1和queue2的角色让queue2变为空的中转队列。获取栈顶peek逻辑与pop类似但转移后不弹出最后一个元素而是记录其值后再将其转移到queue2最后交换队列角色。判空isEmpty直接判断主队列queue1是否为空。完整代码实现import java.util.LinkedList; import java.util.Queue; /** * 用两个队列实现栈 */ public class StackByTwoQueues { // 主队列存储栈的所有元素 private QueueInteger queue1; // 临时中转队列 private QueueInteger queue2; // 初始化 public StackByTwoQueues() { // 推荐使用LinkedList作为Queue的实现LinkedList实现了Deque支持队列操作 queue1 new LinkedList(); queue2 new LinkedList(); } /** * 入栈直接添加到主队列 * param x 要入栈的元素 */ public void push(int x) { queue1.offer(x); } /** * 出栈弹出栈顶元素最后入队的元素 * return 栈顶元素 * throws RuntimeException 栈为空时抛出异常 */ public int pop() { if (isEmpty()) { throw new RuntimeException(栈为空无法执行pop操作); } // 将queue1中除最后一个元素外的所有元素转移到queue2 while (queue1.size() 1) { queue2.offer(queue1.poll()); } // 弹出queue1中剩余的最后一个元素栈顶 int top queue1.poll(); // 交换两个队列的角色让queue1重新作为主队列queue2为空 QueueInteger temp queue1; queue1 queue2; queue2 temp; return top; } /** * 获取栈顶元素不弹出 * return 栈顶元素 * throws RuntimeException 栈为空时抛出异常 */ public int peek() { if (isEmpty()) { throw new RuntimeException(栈为空无法执行peek操作); } // 逻辑同pop但保留最后一个元素 while (queue1.size() 1) { queue2.offer(queue1.poll()); } int top queue1.peek(); // 将最后一个元素也转移到queue2 queue2.offer(queue1.poll()); // 交换队列角色 QueueInteger temp queue1; queue1 queue2; queue2 temp; return top; } /** * 判断栈是否为空 * return 空返回true否则返回false */ public boolean isEmpty() { return queue1.isEmpty(); } // 测试示例 public static void main(String[] args) { StackByTwoQueues stack new StackByTwoQueues(); // 入栈1 - 2 - 3 stack.push(1); stack.push(2); stack.push(3); // 输出栈顶3 System.out.println(栈顶元素 stack.peek()); // 出栈3 System.out.println(出栈元素 stack.pop()); // 输出栈顶2 System.out.println(栈顶元素 stack.peek()); // 出栈2 System.out.println(出栈元素 stack.pop()); // 出栈1 System.out.println(出栈元素 stack.pop()); // 判空true System.out.println(栈是否为空 stack.isEmpty()); } }代码说明队列选择使用LinkedList实现Queue接口LinkedList支持队列的offer/poll/peek操作效率高。异常处理pop和peek操作时若栈为空则抛出运行时异常符合栈的常规行为。队列交换每次pop/peek后交换queue1和queue2的引用避免重复创建队列节省内存。时间复杂度pushO(1)直接入队。pop/peekO(n)需要转移 n-1 个元素n 为栈的大小。优化思路可选若希望降低pop/peek的时间复杂度可改用一个队列 记录栈顶的方式入栈时直接入队并记录栈顶。出栈时将队列前 n-1 个元素依次出队并重新入队最后弹出第 n 个元素栈顶。这种方式仅需一个队列核心逻辑与双队列一致但代码更简洁。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

做网站前置审批网站排名超快

你是否曾经好奇,为什么某些股票总在特定的月份表现优异?为什么基金收益会在某些时间段集中爆发?这一切都与金融市场中神秘的"日历效应"密切相关。通过量化交易技术,我们能够系统性地分析这些市场规律,为投资…

张小明 2025/12/31 2:54:06 网站建设

网站tag设计竞价推广的优势有哪些

还在为喜欢的视频无法下载而烦恼吗?🤔 今天我要向大家推荐一款真正实用的资源下载工具,它能帮你轻松获取微信视频号、抖音、快手、QQ音乐等各种网络资源,让你的数字生活更加丰富多彩! 【免费下载链接】res-downloader …

张小明 2025/12/31 0:46:02 网站建设

公司网站手机端和电脑端渝东建设工程造价信息网

第一章:我的手机不能安装Open-AutoGLM 在尝试将 Open-AutoGLM 安装到移动设备时,许多用户会遇到无法成功安装的问题。这通常与设备的系统版本、架构兼容性或应用来源设置有关。 检查设备兼容性 Open-AutoGLM 目前仅支持特定 CPU 架构(如 arm…

张小明 2026/1/8 20:39:50 网站建设

西安网站建设案例网络规划设计师2023估分

第一章:你用的AI生成模型安全吗?Open-AutoGLM隐私漏洞让人细思极恐近年来,开源大模型的普及极大推动了AI应用的发展,但随之而来的安全隐患也逐渐浮出水面。Open-AutoGLM作为一款基于AutoGLM架构的开放生成模型,因其高效…

张小明 2025/12/30 18:46:36 网站建设

上海网站建设公司地址邯郸网站优化

第一章:环境监测中克里金插值的核心挑战在环境监测领域,克里金(Kriging)插值作为一种地统计学方法,被广泛用于空间变量的最优无偏估计。然而,其实际应用面临多重技术挑战,尤其是在数据稀疏、空间…

张小明 2026/1/9 14:41:36 网站建设

wordpress是pass么滁州百度seo

Kasawaki川崎焊接机器人弧焊气体节约设备:WGFACS是焊接技术领域的一项显著创新。该设备专注于提升弧焊过程中的气体使用效率,通过智能化控制和精准调节,大幅减少了气体消耗,从而降低了生产成本,并增强了环保性能。WGFA…

张小明 2026/1/7 21:44:31 网站建设