资源简介
将含有加减乘除的算术表达式中缀形式转换成后缀形式输出

代码片段和文件信息
#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
- 上一篇:计算机专业英语论文原文+翻译
- 下一篇:测试文件及答案
相关资源
- VisualStudioUninstaller vs卸载工具
- 组态王驱动开发包3.0.0.7(中文)
- 多窗口后台鼠标连点器
- 使用选择性重传协议实现UDP可靠通信
- VC 获得文件属性 获取文件的创建时
- 读者写者问题(读者优先,写者优先
- 用VC 编写的仿QQ聊天室程序源代码
- 外点法程序
- 外罚函数程序
- qt-电子点菜系统
- 推箱子及人工智能寻路C 源代码
- 自己写的航空订票系统c 版--数据结构
- 数据结构实验魔王语言
- MUSIC算法c 实现
- C 餐厅叫号系统(QT平)
- 国际象棋c 完整版
-
ob
jectARX给Auto CAD加工具条 - 画图程序MFC/VC/VC CRectTracker 串行化
- MFC网络编程实例
- c 课程设计 职工信息管理系统
- VC 游戏编程—附源代码
- IpHlpApi.h&IpHlpApi.lib
- 清华大学 c 郑莉 ppt课件
- c 程序判断离散数学中命题公式
- 多项式求和(数据结构C 版)
- vc 6.0开发的流程图编辑器
- VC 天空盒(skyBox)实现(附源代码)
- c MFC 画多边形
- 用C 实现的对网络上的ARP数据包进行
- Microsoft基本类库 (MFC)(C 库)
评论
共有 条评论