后缀表达式求值的算法及代码

后缀表达式求值的算法及代码

ID:43739222

大小:29.00 KB

页数:3页

时间:2019-10-13

后缀表达式求值的算法及代码_第1页
后缀表达式求值的算法及代码_第2页
后缀表达式求值的算法及代码_第3页
资源描述:

《后缀表达式求值的算法及代码》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、#include#includestructnode//栈结构声明{intdata;//数据域structnode*next;//指针域};typedefstructnodestacklist;//链表类型typedefstacklist*link;//链表指针类型linkoperand=NULL;//操作数栈指针linkpush(linkstack,intvalue)//进栈{linknewnode;//新结点指针newnode=newstacklist;//分配新结点if(!newnode){p

2、rintf("分配失败!");returnNULL;}newnode->data=value;//创建结点的内容newnode->next=stack;stack=newnode;//新结点成为栈的开始returnstack;}linkpop(linkstack,int*value)//出栈{linktop;//指向栈顶if(stack!=NULL){top=stack;//指向栈顶stack=stack->next;//移动栈顶指针*value=top->data;//取数据deletetop;//吸收结点returnstack;//

3、返回栈顶指针}else*value=-1;}intempty(linkstack)//判栈空{if(stack!=NULL)return1;elsereturn0;}intisoperator(charop)//判运算符{switch(op){case'+':case'-':case'*':return1;//是运算符,返回1case'/':return0;//不是运算符,返回0}}intgetvalue(intop,intoperand1,intoperand2)//计算表达式值{switch((char)op){case'*':re

4、turn(operand1*operand2);case'/':return(operand1/operand2);case'+':return(operand1+operand2);case'-':return(operand1-operand2);}}voidmain()//主函数{charexp[100];intoperand1=0;//定义操作数1intoperand2=0;//定义操作数2intresult=0;//定义操作结果intpos=0;printf("t请输入后缀表达式:");gets(exp);//读取表达式

5、printf("t后缀表达式[%s]的计算结果是:",exp);while(exp[pos]!=''&&exp[pos]!='')//分析表达式字符串{if(isoperator(exp[pos]))//是运算符,取两个操作数{operand=pop(operand,&operand1);operand=pop(operand,&operand2);operand=push(operand,getvalue(exp[pos],operand1,operand2));//计算结果入栈}elseoperand=push(o

6、perand,exp[pos]-48);//是操作数,压入操作数栈pos++;//移到下一个字符串位置}operand=pop(operand,&result);//弹出结果printf("%d",result);//输出}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。