博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
7.5 中序式转后序式
阅读量:6623 次
发布时间:2019-06-25

本文共 1850 字,大约阅读时间需要 6 分钟。

7-6 toPosfix.c

1 #include 
2 #include
3 int PRI(char op) //设定算符的优先级 4 { 5 switch (op) 6 { 7 case '+': 8 case '-': 9 return 1; 10 case '*': 11 case '/': 12 return 2; 13 default: 14 return 0; 15 } 16 } 17 char *toPosfix(char *infix) // 求后序表达式 18 { 19 int length=strlen(infix); 20 char *stack,*buf,*p,flag; 21 char op; 22 int i,top=0; 23 if(!(stack=(char *)malloc(sizeof(char)*length))) //作为栈内存空间 24 { 25 printf("内存分配失败!\n"); 26 exit(0); 27 } 28 if(!(buf=(char *)malloc(sizeof(char)*length*2))) //保存后序表达式字符串 29 { 30 printf("内存分配失败!\n"); 31 exit(0); 32 } 33 p=buf; 34 for(i=0;i
=PRI(op)) //判断栈顶运算符与当前运算符的级别 52 { 53 *p++=stack[top]; //将栈中的运算符保存到字符串 54 top--; //修改栈顶指针 55 flag=0; 56 } 57 if(top
0) //若栈不为空 82 { 83 *p++=stack[top]; //将栈中的运算符出栈 84 top--; //修改栈顶指针 85 } 86 free(stack);//释放栈占用的内存 87 *p='\0'; 88 return (buf); //返回字符串 89 } 90 double calc(double d1, char op, double d2) //计算函数 91 { 92 switch (op) //根据运算符进行操作 93 { 94 case '+': 95 return d1 + d2; 96 case '-': 97 return d1 - d2; 98 case '*': 99 return d1 * d2;100 case '/':101 return d1 / d2;102 }103 return 0;104 }105 double eval(char *postfix) //计算表达式的值 106 {107 double *stack,num,k=1.0; //k为系数 108 int i,length,top=0,dec=0,flag;//dec为0表示整数,为1表示小数,flag=1表示有数据需入栈 109 char token;110 111 length=strlen(postfix);112 if(!(stack=(double *)malloc(sizeof(double)*length)))113 {114 printf("内存分配失败!\n");115 exit(0); 116 }117 num=0;118 for(i=0;i

 

转载于:https://www.cnblogs.com/wozixiaoyao/p/5686016.html

你可能感兴趣的文章
html
查看>>
本地wampserver如何配置伪静态
查看>>
【转载】支持向量机SVM(一)
查看>>
C#串口通信实例
查看>>
小程序数据返回时刷新当前页面数据
查看>>
MySQL数据故障时备份与恢复
查看>>
Nlopt优化函数库,用法举例
查看>>
海思 core 电压动态调整
查看>>
jFinal 关联数据库操作
查看>>
团队冲刺第二天
查看>>
sed删除空行和开头的空格和tab键
查看>>
php扩展安装
查看>>
Windows与Linux之间的文件自动同步
查看>>
What a C programmer should know about memory
查看>>
MySQL备份账号权限
查看>>
15个重要的Android代码
查看>>
(转)android 牛人必修 ant 编译android工程
查看>>
求最大公约数与最小公倍数
查看>>
C# Winform 跨线程更新UI控件常用方法总结(转)
查看>>
eclipse菜单栏不显示 + the system is running in lou-graphics mode问题
查看>>