打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
c语言---计算后缀表达式

boolcompute(vector<char> s,int &res) //计算后缀表达式的值,vector<char>s为字符型的动态数组的后缀表达式

{

inti = 0,num; //

intlen = s.size(); //len为后缀表达式的长度

stack<int>stk; //存放后缀表达式计算的结果

while(i< len)

{

if(s[i] == ' ') //如果读入的字符为空格,就跳到下一个字符

{

i++;

continue;

}

if(s[i] >= '0' && s[i] <= '9') //如果读入的字符为“0”到“9”

{

num= 0;

while(s[i]>= '0' && s[i] <= '9')

{

num= num * 10 + s[i] - '0';

i++;

}

stk.push(num); //把读入的数字字符压入栈中

}

else //既不是空格,也不是数字字符,那就是操作符了

{

if(stk.empty()) //如果栈还是空的话,返回错误

returnfalse;

inta = stk.top(); stk.pop();

if(stk.empty())

returnfalse;

intb = stk.top(); stk.pop(); //a,b把刚读入的两个数字弹出栈

switch(s[i])

{

case'+':

stk.push(b+a);

break;

case'-':

stk.push(b-a);

break;

case'*':

stk.push(b*a);

break;

case'/':

stk.push(b/a);

break;

}

i++; //继续读入下一个字符

}

}

if(stk.empty()) //如果此时栈是空的,就是错误的

returnfalse;

res= stk.top(); stk.pop(); //将栈中的结果弹出来

if(!stk.empty()) //如果此时的栈为非空的话,就是错误的

returnfalse;

returntrue;

}


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
前缀、中缀、后缀表达式
hdoj 1237 简单计算器(计算器应用)
【洛谷日报#176】浅谈表达式的求值(后缀表达式)
向量及单链表实现栈的界面
STL容器之优先队列
华为机试HJ77:火车进站
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服