尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
算法7.链式栈
算法7.链式栈// 07_链式栈.cpp : 此文件包含 main 函数。程序执行将在此处开始并结束。//#includeiostream#includestring#includestackusingnamespacestd;// 比较符号优先级的boolPriority(charch,chartopch){if((ch*||ch/)(topch||topch-))returntrue;if(topch(ch!))returntrue;returnfalse;}// 中缀表达式 后缀表达式stringMiddleToEndExpr(string expr){string result;stackchars;for(charch:expr){if(ch0ch9){result.push_back(ch);}else{for(;;){// 处理符号了if(s.empty()||ch(){s.push(ch);break;}// 比较当前符号ch和栈顶符号top的优先级chartopchs.top();// Priority:true ch topch false ch topchif(Priority(ch,topch)){s.push(ch);break;}else{s.pop();if(topch()// 如果遇见)一直出栈直到(break;result.push_back(topch);}}}}// 如果符号栈还存留符号直接输出到后缀表达式里面 /while(!s.empty()){result.push_back(s.top());s.pop();}returnresult;}intmain(){coutMiddleToEndExpr((12)*(34))endl;coutMiddleToEndExpr(2(46)/26/3)endl;coutMiddleToEndExpr(26/(4-2)(46)/2)endl;}#if0// 链式栈classLinkStack{public:LinkStack():size_(0){head_newNode;}~LinkStack(){Node*phead_;while(p!nullptr){head_head_-next_;deletep;phead_;}}public:// 入栈 O(1) 把链表头节点后面第一个有效节点的位置当作栈顶位置voidpush(intval){// head_ - 1// head_ - 2 - 1Node*nodenewNode(val);node-next_head_-next_;head_-next_node;size_;}// 出栈 O(1)voidpop(){if(head_-next_nullptr)throwstack is empty!;Node*phead_-next_;head_-next_p-next_;deletep;size_--;}// 获取栈顶元素inttop()const{if(head_-next_nullptr)throwstack is empty!;returnhead_-next_-data_;}// 判空boolempty()const{returnhead_-next_nullptr;}// 返回栈元素个数 遍历一遍链表记录节点个数O(n) 想达到O(1)intsize()const{returnsize_;}private:structNode{Node(intdata0):data_(data),next_(nullptr){}intdata_;Node*next_;};Node*head_;intsize_;};intmain(){intarr[]{12,4,56,7,89,31,53,75};LinkStack s;for(intv:arr){s.push(v);}couts.size()endl;while(!s.empty()){couts.top() ;s.pop();}coutendl;couts.size()endl;}#endif
RELATED

相关推荐

自动化测试维护实战:从面试误区到高阶技巧

自动化测试维护实战:从面试误区到高阶技巧

1. 为什么"我做过自动化"是面试中的大忌"我做过自动化测试"这句话在技术面试中出现的频率高得惊人,但恰恰是这种笼统表述最容易引起面试官的反感。作为经历过上百场技术面试的面试官,我每次听到这种回答都会下意识追问:&…

📅 2026/10/10 18:12:33
Java分布式缓存实战:从Spring Boot到大厂面试

Java分布式缓存实战:从Spring Boot到大厂面试

1. 项目概述:Java技术栈与大厂面试的鸿沟跨越去年帮一位二本院校的应届生做职业辅导时,他拿着某大厂的面试评价反馈来找我——"分布式系统理解停留在理论层面"、"缓存体系认知不完整"。这恰恰反映了当前Java开发者面临的现实困境&am…

📅 2026/8/25 9:18:05
JavaScript事件循环机制详解与面试实战

JavaScript事件循环机制详解与面试实战

1. 事件循环机制的前置知识梳理在滴滴校招的这场前端一面中,事件循环(Event Loop)题目可以说是必考题中的必考题。作为面试官最爱的考察点之一,它直接反映了候选人对JavaScript运行机制的理解深度。要真正掌握这个知识点&#xff…

📅 2026/9/15 10:10:02
MORE NEWS

更多资讯

📰

Mimics医疗建模实战:从CT到3D打印的6大关键技术环节

简介:本资源是一份面向医学影像处理初学者与生物工程从业者的Mimics中文版系统教程,聚焦三维建模核心流程,解决从CT数据导入到3D打印输出的实操断点问题。教程覆盖打开工程、多视图定位与方位校正、窗口化调节(含HU值直方图交互&a…

📰

Step 5 Preview沙盒实测:杨辉三角倒推法与CSS 3D渲染避坑指南

1. 这不是又一个跑分帖:为什么Step 5 Preview的编程任务实测比“3000分”更有价值 你点开这个标题,大概率是刚在某个编程学习平台卡在了“用倒推法求杨辉三角”这关,或者正对着 transform: rotateY(60deg) translateZ(300px) 的效果发呆&am…

📰

GBase 8a数据库安全管理与权限控制实践

1. 数据库安全管理的核心价值在数据驱动的商业环境中,数据库作为企业核心资产的存储载体,其安全性直接关系到业务连续性和合规性。GBase 8a作为分析型数据库的典型代表,其运维管理系统GDOM(GBase Database Operation Manager&…

📰

华为网络设备配置文件管理与备份恢复实战

1. 网络设备配置管理的重要性在IT基础设施运维中,网络设备的配置文件就像人类的大脑记忆。这些以文本形式存储的配置指令,决定了路由器、交换机等设备如何转发数据包、实施安全策略以及提供各类网络服务。一旦配置丢失或损坏,轻则导致网络中断…

📰

AI配音停顿设置全解析:5大参数调出自然语音

1. 为什么停顿参数是AI配音的“隐形灵魂”做音视频这行快二十年,我见过太多人把精力全砸在音色挑选上,试了几十个发音人,最后导出成品一听,总觉得“哪里不对劲”——语气平、节奏赶、像机器在念稿。问题往往不在音色本身&#xff…

📰

镜像源HTTPS证书验证失败排查指南:conda与pip修复实战

1. 一次证书过期引发的连锁反应:问题全景拆解1.1 这个故障到底长什么样某天早上你打开终端,习惯性地敲下conda install numpy,结果终端没有像往常一样滚动下载进度条,而是甩出一串红字:CondaHTTPError: HTTP 000 CONNE…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬