表达式计算栈实现

//逆波兰表达不需要使用括号
//
//
//#include<stdio.h>  
//#include<math.h>  
//#define max 100  
//char ex[max];        
//
//
//void trans() {
// char str[max];  
// char stack[max];
// char ch;       
// int sum, i, j, t, top = 0; 
//    
//    
// printf("*****************************************\n");
// printf("*输入一个求值的表达式,以#结束。*\n");
// printf("******************************************\n");
// printf("算数表达式:");
//
// i = 0;
//
// do {
// i++;
// scanf("%c", &str[i]);
// } while (str[i] != '#' && i != max);
//
// sum = i;
// t = 1;
// i = 1;
// ch = str[i];
// i++;
// //while
// while (ch != '#') {
//
// switch (ch) {
// case '(':           
// top++;           
// stack[top] = ch;
// break;
//
// case ')':
// while (stack[top] != '(') {
// ex[t] = stack[top];
// top--;           
// t++;               
// }
// top--;
// break;
// case '+': /*判定为加减号*/
// case '-':
// while (top != 0 && stack[top] != '(') {
// ex[t] = stack[top];
// top--;             
// t++;              
// }
// top++;
// stack[top] = ch;       
// break;
// case '*': 
// case '/':
// while (stack[top] == '*' || stack[top] == '/') {
// ex[t] = stack[top];
// top--;           
// t++;              
// }
// top++;
// stack[top] = ch;
// break;
// case ' ':
// break;
// default:
// while (ch >= '0' && ch <= '9') { 
// ex[t] = ch;                  
// t++;                        
//
// ch = str[i];              
// i++;                      
// }
// i--;
// ex[t] = '#';                     
// t++;
// }
// ch = str[i];
// i++;
// }
//
// while (top != 0) {
// ex[t] = stack[top];
// t++;
// top--;
// }
// ex[t] = '#';
// printf("\n原来的中序表达式:");
// for (j = 1; j < sum; j++)
// printf("%c", str[j]);
// printf("\n后缀表达式:");
// for (j = 1; j < t; j++)
// printf("%c", ex[j]);
//}
//void compvalue() {
// float stack[max], d;
// char ch;
// int t = 1, top = 0; 
// ch = ex[t];
// t++;
//
// while (ch != '#') {
// switch (ch) {
//
// case '+':
// stack[top - 1] = stack[top - 1] + stack[top];
// top--;
// break;
// case '-':
// stack[top - 1] = stack[top - 1] - stack[top];
// top--;
// break;
// case '*':
// stack[top - 1] = stack[top - 1] * stack[top];
// top--;
// break;
//
// case '/':
// if (stack[top] != 0)
// stack[top - 1] = stack[top - 1] / stack[top];
// else {
// printf("\n\t除零错误!\n");
// exit(0);                   
// }
// top--;
// break;
// default:
// d = 0;
// while (ch >= '0' && ch <= '9') {
// d = 10 * d + ch - '0'; 
// ch = ex[t];
// t++;
// }
// top++;
// stack[top] = d;
// }
// ch = ex[t];
// t++;
// }
// printf("\n\t计算结果:%g\n", stack[top]);
//}
//
//int main() {
// trans();        
// compvalue();   
// return 0;
//}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值