c语言表达式计算中缀转后缀,中缀表达式转后缀表达式并计算结果(c语言版)

《中缀表达式转后缀表达式并计算结果(c语言版)》由会员分享,可在线阅读,更多相关《中缀表达式转后缀表达式并计算结果(c语言版)(8页珍藏版)》请在技术文库上搜索。

1、中缀表达式转后缀表达式中缀表达式转后缀表达式 中缀表达式转后缀表达式的规则。 1.遇到操作数:直接输入到后缀表达式栈 2.遇到运算符,直接入操作符栈 3.遇到左括号:直接将其入栈 4.遇到右括号:执行出栈操作,并将出栈的元素输出,直到弹出栈的是左括号,左括号不 输出。 5.遇到其他运算符:加减乘除:弹出所有优先级大于或者等于该运算符的栈顶元素,然后 将该运算符入栈 6.最终将操作符栈中的元素依次出栈,输出到后缀表达式栈。 以下是自己写的代码。亲测没有问题。 (模拟一个计算器,可以带括号,中间可以空格,只 支持整数输入,但是输出结果精确到小数后 6 位) #include “stdio.h“ #。

2、define MAX_LEN 100 typedef struct cal unsigned char isOper;/是否是操作数 1,操作符 0.操作数 double Num;/值。或者是操作符的 ASCII 值 STRUCT_CAL; #define IS_NUM 0x00 #define IS_OPER0x01 STRUCT_CAL stackCalMAX_LEN; STRUCT_CAL stackCalBackMAX_LEN; unsigned char topCal; char stackOperMAX_LEN; unsigned char topOper; /* * 堆栈初始化 。

3、*/ void stackInit(void) int i; for(i=0;i=MAX_LEN)return; stackCaltopCal.Num = num; stackCaltopCal.isOper= isOper; topCal+; /* * 操作符出栈 */ char stackOperPop(void) if(topOper = 0)return 0; return stackOper-topOper; /* * 操作符入栈 */ void stackOperPush(char oper) if(topOper =MAX_LEN)return; stackOpertopOper。

4、+ = oper; /* *比较两个 sour sour1 的优先级 *1 sour = sour1 直接入操作符栈 *0 sour =0 ) num2 = stackCalPop()-Num; switch(char)stackCalBacki.Num) case +: stackCalPush(num2+num1, IS_NUM); break; case -: stackCalPush(num2-num1, IS_NUM); break; case *: stackCalPush(num2*num1, IS_NUM); break; case /: stackCalPush(int)nu。

5、m2/num1, IS_NUM); break; default : break; else stackCalPush(stackCalBacki.Num, IS_NUM); i+; if(i=tmpTop) break; printf(“nThe result is : %fn“, stackCal0.Num); stackInit(); int main(void) char inputMAX_LEN; stackInit(); while(1) printf(“Please input calculate Expression :n“); gets(input); StrToCal(input); /dispCalc(); suffixExpression(); return 0; 。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值