1.栈的应用

后入先出的有序列表

	//无法进行小数、负数计算,除法计算为在除法步骤时舍弃小数部分public static void main(String[] args) {//双栈实现计算器功能,思路//1.定义数栈1、符号栈2、扫描指针index,从前往后扫描表达式序列//2.遇到数字,保存到list中,直到扫描到符号,将数字还原成多位数,压入栈1//3遇到符号,分以下情况//3.1如果为左括号,直接入栈//3.2如果为右括号,依次弹出栈2的一个符号和// 栈1的两个数字计算,将结果压入栈1,直到弹出左括号//3.3如果为运算符且栈2为空,压入栈2,//3.4如果运算符优先级小于或等于栈2栈顶符号,弹出栈2栈顶符号和栈1两个数字计算//3.5如果运算符优先级大于栈2栈顶符号,压入栈2//4.扫描结束,依次弹出栈2的一个符号和// 栈1的两个数字计算,将结果压入栈1,最终栈1数字为运算结果
//        String string = "5+2*3-4";
//        String string = "10+20*3-40/2";
//        String string = "100+200/50*3";String string ="10*(2+3)-40/2";ArrayDeque<Integer> numStack = new ArrayDeque<>();//数栈ArrayDeque<Character> strStack = new ArrayDeque<>();//符号栈int index=0;//扫描指针while (index<string.length()){char c=string.charAt(index);if(Character.isDigit(c)){//步骤2int num=0;//存储多位数数值//计算多位数while (index<string.length()&&Character.isDigit(string.charAt(index))){num=num*10+(string.charAt(index)-'0');index++;}numStack.push(num);//将数字压入数栈continue;}if(c=='+'||c=='-'||c=='*'||c=='/'){//3.2和3.5if(strStack.isEmpty() || hasPrecedence(c,strStack.peek())){strStack.push(c);}else {//3.4calculateTop(numStack,strStack);strStack.push(c);}}else if(c=='('){//3.1strStack.push(c);}else if(c==')'){//3.2while (strStack.peek()!='('){calculateTop(numStack,strStack);}strStack.pop();}index++;}while (!strStack.isEmpty()){//步骤4calculateTop(numStack,strStack);}System.out.println("最终结果为:"+numStack.poll());}//判断优先级,true为a比b的优先级高public static boolean hasPrecedence(char a,char b){if((a=='*'||a=='/')&&(b=='+'||b=='-')){return true;}if(b=='('){return true;}return false;}//计算栈顶元素public static void calculateTop(ArrayDeque<Integer> numStack,ArrayDeque<Character> strStack){int num1=numStack.pop();int num2=numStack.pop();char op=strStack.pop();int temp=0;switch (op){case '+':temp=num2+num1;break;case '-':temp=num2-num1;break;case '*':temp=num2*num1;break;case '/':temp=num2/num1;break;}numStack.push(temp);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/95253.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/95253.shtml
英文地址,请注明出处:http://en.pswp.cn/web/95253.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

npm 打包上传命令,撤销错误版本

添加npm用户账号npm adduser上传包命令npm publish撤销错误版本example&#xff1a;npm unpublish longze-guide0.1.0 --forcepackage.json example{"name": "longze-guide","version": "0.1.1","private": false,"des…

Python爬虫实战:研究Pyplot模块,构建IMDb数据采集和分析系统

1. 引言 1.1 研究背景 在大数据时代,互联网蕴含着海量有价值的信息,如何高效获取并分析这些信息成为各行各业的重要需求。网络爬虫作为一种自动化数据采集工具,能够按照预定规则从网页中提取所需信息,为数据分析提供基础数据支撑。而数据可视化则是将抽象数据转化为直观图…

算术逻辑运算指令 (汇编)

乘除运算指令MUL指令实现两个无符号操作数的乘法运算。乘数是OPRD&#xff0c;被乘数位于AL、AX或EAX中&#xff08;由OPRD的尺寸决定&#xff0c;乘数和被乘数的尺寸一致&#xff09;。乘积尺寸翻倍&#xff1a;16位乘积送到AX&#xff1b;32位乘积送DX:AX&#xff1b;64位乘积…

Agentless:革命性的无代理软件工程方案

本文由「大千AI助手」原创发布&#xff0c;专注用真话讲AI&#xff0c;回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我&#xff0c;一起撕掉过度包装&#xff0c;学习真实的AI技术&#xff01; 01. 什么是Agentless&#xff1f; Agentless是由伊利诺伊大学香槟分校…

CVE Push Service | 高危漏洞实时情报自动化推送工具

工具介绍 &#x1f525; CVE Push Service | 自动化高危漏洞情报推送 ⚡ 面向网络安全从业者的 高危漏洞实时情报推送工具 自动拉取 NVD 最新漏洞数据&#xff0c;筛选 CVSS ≥ 7.0 的高危漏洞&#xff0c;并通过 Server酱3 第一时间推送到您的设备&#xff0c;帮助您在应急响…

SpringBoot的基础介绍,用法和配置

为什么会推出一款全新的SpringBoot&#xff1f;虽然Spring已经取得了非常大的成功&#xff0c;他的优点非常的多&#xff0c;将创建方法的权利给了Spring架构使我们程序员写代码更加的便利。但是Spring也有很多的缺点&#xff1a;配置麻烦&#xff0c;而且很多都是模板化的配置…

深度学习】--卷积神经网络

​​​​​​ 卷积神经网络 卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;简称CNN&#xff09;是一种深度学习模型&#xff0c;特别适用于处理具有网格结构的数据。主要目的是自动地、层次化地从原始数据中学习有效的特征表示&#xff0c;以完成特定的任…

RK3588部署YOLOv8姿态估计

1. YOLOv8姿态估计与部署 姿态估计(Pose estimation)是一项涉及识别图像中关键点位置的任务。 关键点可以表示对象的各个部分&#xff0c;如关节、地标或其他独特特征,关键点的位置通常表示为一组2D[x, y]或3D[x, y, visible]坐标。 YOLOv8-Pose人体姿态估计,会先检测出图像中…

信创之-麒麟v10服务器安装tengine(已完成)

之前的文章太长了&#xff0c;所以单独写背景&#xff1a;java8springbootnginxredissqlserverwindows server2000目前java8已经更换&#xff0c;windows也已经更换&#xff0c;sqlserver也已经更换成dm8其实java的静态文件目录&#xff0c;可以很好处理前端网站了&#xff0c;…

Redis进阶(上)

Redis系统架构中各个处理模块是干什么的&#xff1f; Redis 系统架构 本课时&#xff0c;我将进一步分析 Redis 的系统架构&#xff0c;重点讲解 Redis 系统架构的事件处理机制、数据管理、功能扩展、系统扩展等内容。 事件处理机制 Redis 组件的系统架构如图所示&#xff0c;主…

【K8s】整体认识K8s之监控与升级/ETCD的备份和恢复/kustomization/CRD

metrics-server 先说一下metrics-server&#xff0c;这是一个聚合器&#xff0c;专门用来显示集群的资源使用情况&#xff0c;主要是内存和cpu。 安装 metrics-server kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.7.0/comp…

【数据分享】多份土地利用矢量shp数据分享-澳门

而今天要说明数据就是多份土地利用矢量shp数据分享-澳门。数据介绍▲ 土地利用数据&#xff08;2025年&#xff09;▲土地利用数据&#xff08;2018年&#xff09;▲ 30m土地利用数据&#xff08;2023年&#xff09;▲ 公路铁路道路河流水系数据概况其他概况注&#xff1a;本文…

增强现实—Gated-attention architectures for task-oriented language grounding

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

CC攻击的技术分析与防御策略

CC攻击&#xff08;Challenge Collapsar Attack&#xff09;是一种针对Web应用的拒绝服务攻击方式&#xff0c;其主要通过模拟正常用户行为来消耗服务器资源。为了更好地理解这种攻击&#xff0c;让我们详细分析其技术原理及防御策略。CC攻击的技术原理CC攻击主要是通过发送大量…

【图论】分层图

一、分层图的核心思想 分层图是一种将图的不同状态拆分为多个“层”的建模方法&#xff0c;每层对应一种特定状态。通过这种方式&#xff0c;可以将复杂的状态转移问题转化为多层图中的最短路径问题。 核心特点&#xff1a; 层内边&#xff1a;表示普通操作&#xff08;如正常行…

当稳定币开始生息:USDT0 与 Berachain 的二次进化故事

如果说过去几年&#xff0c;稳定币是 DeFi 世界里最安稳的一块基石&#xff0c;那么 2025 年的 Berachain 正在把它们重新塑造成一种新的资产类型。在这条新兴的公链上&#xff0c;稳定币不再只是 “资金的搬运工”&#xff0c;而是摇身一变&#xff0c;成为能生息、能博弈、能…

Kafka、RabbitMQ 与 RocketMQ 在高并发场景下的高可用与性能对比分析

Kafka、RabbitMQ 与 RocketMQ 在高并发场景下的高可用与性能对比分析 消息队列作为分布式系统中常见的异步解耦组件&#xff0c;在高并发场景下对可用性和性能提出了极高的要求。本文基于生产环境需求&#xff0c;深入分析 Kafka、RabbitMQ 与 RocketMQ 三大主流消息中间件在高…

深入理解 HTTP 与 HTTPS:区别以及 HTTPS 加密原理

目录 一、HTTP 与 HTTPS 的基本概念 二、HTTP 与 HTTPS 的核心区别 三、为什么需要 HTTPS&#xff1f; 四、HTTPS 的加密通信原理&#xff08;核心&#xff09; 1. 客户端发起 HTTPS 请求 2. 服务端返回 SSL/TLS 证书 3. 客户端验证证书 4. 客户端生成对称密钥并用公钥…

零售行业的 AI 革命:从用户画像到智能供应链,如何让 “精准营销” 不再是口号?

AI 浪潮下的零售变革​在科技飞速发展的今天&#xff0c;人工智能&#xff08;AI&#xff09;正以前所未有的态势席卷全球&#xff0c;深刻地改变着各行各业的运营模式和发展轨迹&#xff0c;零售行业自然也难以置身事外。AI 技术凭借其强大的数据处理能力、精准的分析预测能力…

PyTorch 面试题及详细答案120题(96-105)-- 性能优化与调试

《前后端面试题》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,SQL,Linux… 。 前后端面试题-专栏总目录 文章目录 一、本文面试题目录 96. 如何查看PyTorch模型的…