c语言利用栈实现四则运算(包括括号小数),<DataStructure_1>用栈实现四则运算(c语言)...

有一句计算机界中的至理名言:

程序=数据结构+算法

可见数据结构是多么地重要啊......呵呵

今天开始复习了一下数据结构 , 解决了以前的一个问题:

用栈这个数据结构实现四则运算

算法思想是借鉴了<>(清华大学出版社 严蔚敏)中的一些思想 , 最原始的算法就是波兰一位逻辑学家的逆波兰表示法

也就是讲中缀表达式转为后缀表达式的算法 , 感觉很强大 ,  呵呵......

好了F话就不多说了 , 直接上代码吧()

算法核心代码:

/*算术表达式求值算法*/

int CountExpression()

{

LinkStack Ope, Num;//操作符栈和操作数栈

char a,b,c,chOpe;

InitStack(&Ope);//初始化符号栈

Push(&Ope, '#');//因为输入中包含# 于是先压一个# 用于判断是否结束

InitStack(&Num);//初始化操作数栈

c = getchar();

//读取遇到#或操作符栈顶为# 就表示结束运算

while(c != '#' || GetTop(&Ope) != '#')

{

//如果是操作数(小于10的一位数) 就压入操作数栈

if(c>= '0' && c<= '9')

{

Push(&Num, c);

c = getchar();

}

//压入操作符栈

else

{

switch(Judge(GetTop(&Ope), c))

{

case '

Push(&Ope, c);

c = getchar();

break;

case '='://当遇到右括号时 就出括号, 并接收下一个字符

Pop(&Ope);

c = getchar();

break;

case '>'://栈顶的操作符优先级高 , 说明需要运算 , 并将计算结果压入操作数栈中

chOpe = Pop(&O

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值