全文预览

程序设计实训报告—表达式求值问题

上传者:读书之乐 |  格式:docx  |  页数:20 |  大小:160KB

文档介绍
h>#include<math.h>/*定义区*/#defineMAXSIZE256#definelength200#defineElemTypecharinterror=0;//二叉树的链式存储结构typedefstructBTNode{?ElemTypedata[length];?structBTNode*lchild;?structBTNode*rchild;}BTNode;//判断是操作符还是操作数intIn(charc){if(c=='+'||c=='-'||c=='*'||c=='/'||c=='('||c==')'||c=='#')return1;//操作符elsereturn0;//操作数}//判断操作符的优先级charPrecede(chara,charb){charr;switch(a){case'+':case'-':if(b=='*'||b=='/'||b=='(')r='<';elser='>';break;//加减比乘除和左括号的优先级低case'*':case'/':if(b=='(')r='<';elser='>';break;//乘除比左括号的优先级低case'(':if(b==')')//左右括号的优先级相同 r='='; elseif(b=='#') { printf("表达式错误\n"); r='g'; } elser='<';//除此之外,左括号比其他符号优先级低 break;case')':if(b=='(') { printf("表达式错误\n"); r='g'; } elser='>';//右括号比其他符号优先级高 break;case'#':if(b==')') { printf("表达式错误\n"); r='g'; } elseif(b=='#')r='='; elser='<';//#比其他的符号优先级低 break;}

收藏

分享

举报
下载此文档