文档之家
首页
教学研究
幼儿教育
高等教育
外语考试
建筑/土木
经管营销
自然科学
当前位置:
文档之家
›
后缀表达式的计算
后缀表达式的计算
格式:doc
大小:35.50 KB
文档页数:4
下载文档原格式
下载原文件
/ 13
下载本文档
下载提示
文本预览
1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
v.push_back(s[i]);
v.push_back(' ');
}
else if (s[i] == '(')
{
stk.push(s[i]);
}
else if (s[i] == ')')
{
while(stk.top() != '(')
{
v.push_back(stk.top());
v.push_back(' ');
break;
case '+':
case '-':
return 1;
break;
case '*':
case '/':
return 2;
break;
default:
return -1;
break;
}
}
bool IsOperator(char op)//是否为运算符
{
if (op == '+' || op == '-' || op == '*' || op == '/')
return false;
res = stk.top(); stk.pop();
if (!stk.empty())
return false;
return true;
}
int main()
{
char s[100];
int res;
vector<char> v;
gets(s);
inTOpost(s,v);
{
num = num * 10 + s[i] - '0';
i++;wk.baidu.com
}
stk.push(num);
}
else
{
if (stk.empty())
return false;
int a = stk.top(); stk.pop();
if (stk.empty())
return false;
int b = stk.top(); stk.pop();
v.push_back(' ');
stk.pop();
}
}
stk.push(s[i]);
}
i++;
}
while(!stk.empty())
{
v.push_back(stk.top());
v.push_back(' ');
stk.pop();
}
}
bool compute(vector<char> s,int &res)//计算后缀表达式的值
{
return true;
}
return false;
}
void inTOpost(char s[],vector<char> &v)//转为后缀表达式
{
stack<char> stk;
int i = 0,len = strlen(s);
while(i < len)
{
if(s[i] >= '0' && s[i] <= '9')
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())
{
int i = 0,num;
int len = s.size();
stack<int> stk;
while(i < len)
{
if (s[i] == ' ')
{
i++;
continue;
}
if (s[i] >= '0' && s[i] <= '9')
{
num = 0;
while(s[i] >= '0' && s[i] <= '9')
stk.pop();
}
stk.pop();
}
else if (IsOperator(s[i]))
{
if (!stk.empty())
{
while(!stk.empty() && priority(s[i]) <= priority(stk.top()))
{
v.push_back(stk.top());
#include <iostream>
#include <stack>
#include <vector>
#include <string.h>
using namespace std;
int priority(char op)//运算符的优先级
{
switch(op)
{
case '(':
return 0;
输出
13
//后缀表达式
for (int i = 0;i < v.size();i++)
{
cout<<v[i];
}
cout<<endl;
if (compute(v,res))
{
cout<<res<<endl;
}
else
cout<<"输入错误"<<endl;
return 0;
}
测试数据
1+2*(3+4)-2*(3-2)
合集下载
相关主题
后缀表达式的计算
c语言后缀表达式计算
后缀表达式
前缀表达式后缀表达式
文档推荐
后缀表达式求值
页数:5
第二章 前缀表达式、中缀表达式、后缀表达式的转换
页数:3
C语言 后缀表达式计算
页数:18
后缀表达式求值的算法及代码
页数:3
后缀表达式转化为前缀表达式并求值
页数:6
后缀表达式的计算
页数:4
数学表达式解析(前缀中缀后缀)
页数:13
中缀表达式转后缀表达式并计算结果(C语言版)
页数:8
将中缀表达式转换为后缀表达式并计算
页数:13
数学表达式解析汇报(前缀、中缀、后缀)
页数:16
最新文档
饭店包间名字大全
word无法创建工作文件,请检查临时环境变量
自行车健身比赛开幕式讲话词
2018乡村医生个人工作总结
MySQL测试题 SQL
合勤NXC5200
铁路集中箱空箱调度优化建模案例(案例2)
微分几何教学大纲-复旦大学数学科学学院
人教版九年级数学上册导学案:24.1.1_圆【精品】
(整容后办护照用)医院整容证明