当前位置: 首页 > news >正文

表达式转换 - sjj

表达式转换-栈和队列

项目名称 内容
课程名称 数据结构
班级 网安2512
学号 202521336042
实验项目名称 表达式转换-栈和队列

一、实验内容与设计思想

题目:表达式转换-栈和队列

函数相关伪代码

  1.*/优先级高于+-2. 初始化栈stif(ch==num)输出num;if(运算符优先级<=等于栈顶) {cout << " " << st.top();st.pop();st.push(ch);}if(ch=="(")在遇到")"之前的运算符入栈;if(ch==")"){当st不为空且st.top() != '(':输出 st.top()st.pop()最后'('出栈}

函数代码

for (int i = 0; i < middle.length(); i++) {char c = middle[i];if ((c >= '0' && c <= '9')) {if (!first) {cout << " ";}first = false;while (i < middle.length() && ((middle[i] >= '0' && middle[i] <= '9') || middle[i] == '.')) {cout << middle[i];i++;}i--;}else if ((c == '+' || c == '-') && (i == 0 || middle[i - 1] == '(')) //判断数字的正负{if (c == '+') {i++;if (!first) {cout << " ";}first = false;while (i < middle.length() && ((middle[i] >= '0' && middle[i] <= '9') || middle[i] == '.')) {cout << middle[i];i++;}i--;}else if (c == '-') {if (!first) {cout << " ";}first = false;cout << "-";i++;while (i < middle.length() && ((middle[i] >= '0' && middle[i] <= '9') || middle[i] == '.')) {cout << middle[i];i++;}i--;}}else if (c == '(') {st.push(c);}else if (c == ')') {while (!st.empty() && st.top() != '(') {cout << " " << st.top();st.pop();}if (!st.empty()) {st.pop();}}else if (c == '+' || c == '-' || c == '*' || c == '/') {while (!st.empty() && st.top() != '(' && priority(st.top()) >= priority(c)) {cout << " " << st.top();st.pop();}st.push(c);}
}
while (!st.empty()) {cout << " " << st.top();st.pop();
}

函数的时间复杂度、空间复杂度

   时间复杂度:O(n);空间复杂度:O(n)

二、实验使用环境(本次实验所使用的平台和相关软件)

以下请根据实际情况编写

  • 操作系统:Windows10专业版
  • 编程语言:C++
  • 开发工具:Visual Studio Community 2026
  • 编译器:Markdown

三、实验步骤和调试过程(实验步骤、测试数据设计、测试结果分析)

以下请根据实际情况编写

题目:表达式转换

本机运行截图
image

PTA提交截图
image
过程
8559a88f660e27f54f34b13dc77f6c47_720


四、实验小结(实验中遇到的问题及解决过程、实验体会和收获)

以下请根据实际情况编写

遇到的问题及解决方法:

1.忽略了数字还有浮点小数的运算,全部当成整数写,运算结果部分正确
2.漏考虑正数与负数
3.一开始函数的标记bool first使用错误,把first=false写入if{cout <<" "}里,使输出结果始终无空格

五、附件(参考文献和相关资料)

以下请根据实际情况编写

  1. C++ Primer
  2. 实验3-栈与队列
  3. 相关博客文章
http://www.jsqmd.com/news/666969/

相关文章:

  • YgoMaster:无需联网的游戏王大师决斗完整解决方案
  • BUUCTF·RSA Base64隐写·实战解析
  • CodeSys轴控指令实战:从基础使能到高级叠加运动的避坑指南
  • 从弹簧振子到RLC电路:拉普拉斯变换解二阶微分方程的物理直觉与建模实战
  • IETF与RFC总起
  • Windows 11终极优化指南:3步实现系统瘦身与性能飞跃
  • VB6老项目维护:MSHFlexGrid和MSFlexGrid控件选错了怎么办?手把手教你识别与替换
  • AGI元学习落地生死线(工业级低资源适配SOP已验证于航天/医疗/金融三大场景)
  • atcoder better+codefore better
  • C# Socket编程避坑指南:从‘连接成功’到消息乱码,我踩过的那些TCP通讯的坑
  • 3大关键问题解析:中国辽宁Tracker服务器如何改变亚洲P2P生态格局
  • 提交的协作与同步:pull、push、fetch与远程仓库的提交交互
  • Universal Control Remapper深度解析:专业级游戏控制器映射实战指南
  • Java并发编程深度解析:把AQS、CAS、死锁一次性讲透,让面试官无话可说
  • 罗技PUBG鼠标宏技术解析:5分钟掌握智能压枪核心原理
  • LiPF6的性质(外篇)
  • SAP财务清账FB05实操避坑:标准、部分、剩余清账到底怎么选?
  • 【西门子字节和位的转换】
  • 别再死记硬背了!用这3个真实编程案例,帮你彻底搞懂离散数学里的‘群’概念
  • 终极Minecraft世界编辑器指南:MCA Selector新手快速上手教程
  • 2026影视大全-转
  • 餐饮加盟新风向:揭秘高潜力品牌与专业企业选择指南 - 品牌策略师
  • LaTeX进阶技巧:用自定义命令优雅管理多作者简介与照片
  • GalForUnity:如何用Unity一站式打造你的首个视觉小说游戏?
  • AGI越狱≠Prompt注入:深度拆解6类新型语义层逃逸技术(含动态记忆污染、梯度隐写、RLHF后门触发)
  • 番茄小说下载器:3个超实用技巧让你随时随地畅读小说
  • 望江寻味:幸福家园土菜馆,让原生态风味成就宴请新地标 - GrowthUME
  • Spring Boot 异步任务执行机制详解
  • 从MSFlexGrid到DataGridView:一个VB6表格控件的“现代化”迁移实战指南
  • 从地质勘探到机器学习:用Matlab Kriging插值预测你的数据‘空白区’(以函数拟合为例)