资源简介
将含有加减乘除的算术表达式中缀形式转换成后缀形式输出
代码片段和文件信息
#include
using namespace std;
#define MAX 100
char stock[MAX];
int top=-1;
void fun( char a[]char b[])
{
int ilenj;
len=strlen(a);
j=-1;
for(i=0;i {
switch(a[i])
{
case ‘(‘:stock[++top]=‘(‘;break;//若a[i]为左括弧“(”则将此括弧入栈stock
case ‘-‘://若a[i]为“+”或“-”则将当前栈stock中“(”以前的所有字符(运算符)依次删除
//并存入数组b中然后将a[i]入栈stock中
case ‘+‘:while(top>=0&&stock[top]!=‘(‘)
b[++j]=stock[top--];
stock[++top]=‘ ‘;
stock[++top]=a[i];
break;
case ‘*‘://若a[i]为“*”或“/”则将当前栈stock中的栈顶端连续的“*”或“/”删除
//并依次存入数组b中然后将a[i]入栈stock中
case ‘/‘:while(top>=0&&stock[top]!=‘(‘&&stock[top]!=‘+‘&&stock[top]!=‘-‘)
b[++j]=stock[top--];
stock[++top]=‘ ‘;
stock[++top]=a[i];
break;
case‘)‘:while(stock[top]!=‘(‘)//若ch为右括弧“)”则将栈op中左括弧“(”以前的字符依次删除
b[++j]=stock[top--];//并存入数组b中
top--;//然后将左括弧“(”删除
break;
default://若a[i]为数字将后续的所有数字均依次存入数组b中
//并以字符“ ”标志数值串结束
b[++j]=a[i];
if(i==len-1)
{
b[++j]=‘ ‘;
break;
}
else
if(a[i+1]<=‘0‘||a[i+1]>=‘9‘)
{
b[++j]=‘ ‘;
}
}
}
while(top>=0)
b[++j]=stock[top--];//若字符串a扫描完毕则将栈stock中的所有运算符依次删除并存入数组b中
b[++j]=‘\0‘;
for(i=0;i<=j;i++)//最后可得到表达式的后缀表示在数组b中
cout<}
void compvalue(char exp[])
{
int ilensum=0c;
top=-1;
int digit[MAX];
len=strlen(exp);
for(i=0;i {
switch( exp[i] )
{
case‘ ‘: break;
case‘+‘: sum=digit[top]+digit[top-1];
digit[--top]=sum;
break;
case‘-‘:sum=digit[top-1]-digit[top];
digit[--top]=sum;
break;
case‘*‘:sum=digit[top]*digit[top-1];
digit[--top]=sum;
break;
case‘/‘:sum=digit[top-1]/digit[top];
digit[--top]=sum;
break;
default:
c=0;
while(exp[i]>=‘0‘&&exp[i]<=‘9‘)
{
c=c*10+exp[i]-48;
i++;
}
digit[++top]=c;
}
}
cout< }
int main()
{
char a[MAX]b[MAX];
cin>>a;//数组a用于存放用户输入的中缀表达式
fun(ab);//函数调用,用于将中缀转换成后缀
cout<<“ “;
compvalue(b);//用于计算中缀表达式结果
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 604503 2009-05-18 22:12 c++中缀转后缀\bin\Debug\stock.exe
文件 3047 2009-05-18 22:12 c++中缀转后缀\main.cpp
文件 118556 2009-05-18 22:12 c++中缀转后缀\obj\Debug\main.o
文件 1100 2009-05-17 19:39 c++中缀转后缀\stock.cbp
文件 215 2009-05-18 22:14 c++中缀转后缀\stock.depend
文件 241 2009-05-18 22:15 c++中缀转后缀\stock.layout
目录 0 2009-12-08 22:15 c++中缀转后缀\bin\Debug
目录 0 2009-12-08 22:15 c++中缀转后缀\obj\Debug
目录 0 2009-12-08 22:15 c++中缀转后缀\bin
目录 0 2009-12-08 22:15 c++中缀转后缀\obj
目录 0 2009-12-08 22:15 c++中缀转后缀
----------- --------- ---------- ----- ----
727662 11
- 上一篇:计算机专业英语论文原文+翻译
- 下一篇:测试文件及答案
相关资源
- 机器狗源代码
- 用qt写的学生成绩管理系统
- 用qt写的签到程序
- MSComm_VS2010
- 日志库EasyLogging++共享功能演示工程
- 目录重定向源代码工程
- 图书信息管理系统设计
- KinectSDK2.0音频获取
- KinectSDK2.0骨骼帧与笑面男
- KinectSDK2.0深度帧获取
- CListCtrl控件实现Item项拖拽效果
- 编制一个程序,要求输入5个学生的学
- 二叉树深度+建树+查找+遍历二叉树
- 强化学习实验 小车爬山例程
- 数据结构课程设计之客户积分管理系
- 微型伺服马达原理与控制.doc
- 模拟病人排队看病实验程序代码
- 远控小木马
- 气象数据生成卫星云图雷达雨量风力
- 声明一个类Point,然后利用它声明一个
- kinect深度图像去噪
- win环境下的cholmod库(已编译)
- 哈工程本科算法实验-0-1背包动态规划
- 住房管理系统课程设计报告
- 曹文信息学课件_竞赛中常用的STL
- Qt 访问redis接口代码
- 顶角判别法识别多边形的凸凹性,并
- NSGA2算法代码
- ListCtrl控件和下拉框,编辑框等控件组
- vs2017+qt在一个dll中集成多个自定义插
评论
共有 条评论