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

网站建设分享文章企业在线查询

网站建设分享文章,企业在线查询,百度网站是用什么软件做的,免费的cms视频网站模拟栈 题目链接 栈的数组模拟非常简单#xff0c;不详细描述 设置一个指针指向栈顶第一个元素即可 STL中stack实现已经更新在STL_Stack #includeiostream #includestringusing namespace std;const int N1e51; int m; string s; int stack[N]; int p;//指针…模拟栈 题目链接 栈的数组模拟非常简单不详细描述 设置一个指针指向栈顶第一个元素即可 STL中stack实现已经更新在STL_Stack #includeiostream #includestringusing namespace std;const int N1e51; int m; string s; int stack[N]; int p;//指针,指向栈顶元素 int main(){cinm;p0;//刚开始p0说明栈内为空 while(m--){cins;if(spush){int x;cinx;stack[p]x;}else if(spop){p--;}else if(sempty){if(p0)coutYES\n;elsecoutNO\n;}else if(squery){coutstack[p]\n;}}return 0; }表达式求值 思路 关于表达式求值详解可见bilibili视频讲解 需要设置一个符号栈、一个数字栈 其中数字栈比较简单只要扫描到数字直接入栈即可 对于符号栈要注意若是空栈或者当前是左括号符号直接可以进 每次扫描到符号想入栈时如果扫描的符号优先级大于当前栈顶的元素那么可以直接入栈想象成优先级高的可以压住优先级低的但是如果平级即和、-和-这样的那么就不能入栈需要将符号栈中元素不断pop出直到能压住或者栈空毕竟符号优先级相同谁都不服谁那么先入栈的先出去吧 如果有符号出栈那么就立即将其和数字栈中的数字组合求得的值再次压入数字栈中 直到所有元素都被扫描完然后把符号栈中的元素清理干净即可 实现代码 具体思路在代码中写的很清楚了 #includeiostream #includestring #includealgorithm #includestack #includeunordered_mapusing namespace std;stack int num_s;//数字栈 stack char ope_s;//运算符栈 unordered_map char,int h {{,1},{-,1},{*,2},{/,2}};//定义优先级映射集 void eval(){//计算、当有符号出栈时将其和数字栈中的元素结合计算//此时注意元素在栈中的顺序因为对于除法来说a/b和b/a不一样 int a,b;//两个需要被运算的数字 char ope;//运算符 //第二个数字 bnum_s.top();num_s.pop();//第一个数字 anum_s.top();num_s.pop();//运算符opeope_s.top();ope_s.pop(); //进行运算int result;if(ope)resultab;if(ope-)resulta-b;if(ope*)resulta*b;if(ope/)resulta/b;//将计算结果压入栈中 num_s.push(result); }int main(){string s;cins;//读取表达式 for(int i0;is.size();i){//从头扫描表达式 if(isdigit(s[i])){//isdigit()用于判断该元素是否为数字int ji,x0;//因为数字可能为多位数因此需要用while读取并且将字符串中的字符转为int以此用于计算 while(js.size()isdigit(s[j])){xx*10s[j]-0;j;}//读取完就将其放入栈中num_s.push(x);//此时j指向一个操作符由于循环结束时i会,因此这里需要将i的值设为j-1//这样在i后下一次循环扫描的就是操作符了 ij-1;}else if(s[i](){//如果是左括号可以直接压入栈ope_s.push(s[i]); }else if(s[i])){//如果是右括号那么就要将左右括号中间所有的操作符弹出并计算while(ope_s.top()!(!ope_s.empty()){//当栈顶不为(且不为空 eval();//计算计算的时候会自动pop符号 } //最后要把( pop出去ope_s.pop(); }else{//如果是操作符那么就要判断操作符和栈顶元素优先级while(!ope_s.empty()h[ope_s.top()]h[s[i]]){//如果当前扫描的元素不比栈顶元素大那么就要eval弹出栈顶元素直到s[i]能压住栈顶元素 eval();} //如果扫描元素能够压住栈顶元素那么直接入栈ope_s.push(s[i]); }} //扫描完了处理符号栈中剩余元素while(!ope_s.empty()){eval();} coutnum_s.top()endl;return 0; }
http://www.hkea.cn/news/14283999/

相关文章:

  • 平台式网站个人博客网站设计模板
  • 做自己的首席安全官的网站网站新闻发布后前台不显示
  • 潍坊制作网站无锡建设工程质量监督网站
  • 国外的平面设计网站市场调研公司存在的意义
  • 台州市住房和城乡建设厅网站wordpress文章文件
  • 网站建设 主机托管莱芜 网站
  • 关于网站开发的引言下载上海发布官方网站
  • 加盟型网站建设wordpress建设购物网站
  • 网站建设详细需求文档网页美工设计教学
  • 网站源码模块专业的东莞网站设计
  • 网上购物网站开发背景win7电脑做网站主机
  • 宿州网站制作公司广州哪个网络公司好
  • 简易的网站模板seo外包软件
  • 榆次做网站建筑公司网站石家庄
  • 网站 备案 中国 名字吗seo网络营销技巧
  • 重庆网站建设模板山西省轻工建设有限责网站
  • 深圳企业社保网站官网电子商务平台经营者
  • 免费制作小说封面的网站wordpress私人建站主题
  • 网站界面颜色搭配wordpress 导航站
  • 阜新网站制作保定seo外包公司
  • 网站建立初步教案胶东国际机场建设有限公司网站
  • 网站开发者工具解读单位网站建设维护论文
  • 施工企业现状长沙网站优化方式
  • 多个wordpress站点同步长春企业网站模板建站
  • 佛山做网站哪家公司最好罗湖商城网站建设哪家服务周到
  • 寿光专业做网站的公司有哪些百度一下网页版
  • 自己做网站的方法3d绘图培训学校
  • 个人导航网站怎么备案微网站和手机网站的区别
  • 智慧团建登录手机版入口企业网站优化官网
  • 国家示范校建设专题网站房屋设计软件app自己设计画图