中缀表格达式转换为后缀表格达式.docVIP

  • 3
  • 0
  • 约6.84千字
  • 约 9页
  • 2019-04-22 发布于江苏
  • 举报
中缀表达式转换为后缀表达式 课程设计任务: 中缀表达式转后缀表达式,并求值。 课程设计思路: 把中缀表达式转换为后缀表达式算法的基本思路是从头到尾地扫描中缀表达式中的每个字符,对于不同类型的字符按不情况进行处理。若遇到的是空格则认为是分隔符,不需要进行处理;若遇到的是数字或小数点,则直接写入到c2中;若遇到的是左括号,则应把它压入到运算符栈中,待以它开始的括号内的表达式转换完毕后再出栈;若遇到的是右括号,则表明括号内的中缀表达式已经扫描完毕,把从栈底直到保存着的对应左括号之间的运算符依次退栈并写入c2串中;若遇到的是运算符,当该运算符的优先级大于栈顶运算符的优先级(加减运算符的优先级设定为1,乘除运算符的优先级设定为2,在栈中保存的特殊运算符’(’的优先级设定为0)时,表明该运算符的后一个运算对象还没有被扫描并放入到c2串中,应把它暂存于运算符栈中,待它的后一个运算对象从c1串中读出并写入到c2串中后,再另其出栈并写入c2串中;若遇到的运算符的优先级小于等于栈顶运算符的优先级,这表明栈顶运算符的两个运算对象已经被保存到c2串中,应将栈顶运算符退栈并写入到c2串中,对于新的栈顶运算符仍继续进行比较和处理,直到被处理的运算符的优先级大于栈顶运算符的优先级为止,然后另该运算符进栈即可。 按照以上过程扫描到中缀表达式结束符时,把栈中剩余的运算符依次退栈并写入到后缀表达式中,再向c2写入表达式结束符和字符串结束符’\0’,整个转换过程就处理完毕,在c2中就得到了转换成的后缀表达式。 课程设计流程: 设中缀算术表达式为:10+(18+9*3)/15-6,则转换过程如下: ??? (1)开始时存放后缀表达式的字符串c2为空: (2)当扫描到左括号时,c2和栈中的数据变化如下: 1?0??????????????????? ?(?????????????????? ??? (3)当扫描到数值3时,c2和栈中的数据变化为: 1?0? ?1?8??9??3???????????? (?+?*???????????????? (4)当扫描到右括号时,c2和栈变为: 1?0? ?1?8??9??3??*?+????????? ??????????????????? ??? (5)当扫描到的数值15时,c2和栈又变为: 1?0? ?1?8??9??3??*?+?1?5??????? /?????????????????? (6)当扫描到 ‘ ’字符时,c2和栈为: 1?0? ?1?8??9??3??*?+?1?5??/?+?6??? -??????????????????? 7)当整个处理过程结束后,栈为空,c2为: 1?0? ?1?8??9??3??*?+?1?5??/?+?6??-? 算法基本思想: 从头到尾扫描中缀表达式,对不同类型的字符按不同情况处理; 1、如果是数字则直接放入后缀表达式数组; 2、如果是左括号则直接入栈; 3、如果是右括号,则把从栈顶直到对应左括号之间的运算符依次退栈,并清除对应的左括号; 4、对于运算符,如果该运算符的优先级大于栈顶优先级,则直接入栈,若该运算符的优先级小于等于栈顶优先级,则先把栈顶运算符出栈,写入后缀表达式数组,然后再入栈; 5、扫描完成后,取出栈中所有运算符,写入后缀表达式数组。 主要代码: #includestdio.h #includestdlib.h #define TRUE 1 #define FALSE 0 #define MAXNUM 100 typedef int DataType; struct SeqStack { DataType s[MAXNUM]; int t; }; typedef struct SeqStack *PSeqStack; PSeqStack createEmptyStack_seq() { //建立空栈 PSeqStack pastack; pastack = (PSeqStack)malloc(sizeof(struct SeqStack)); if (pastack == NULL) printf(空间溢出!!\n); else pastack-t = -1; return pastack; } int isEmptyStack_seq(PSeqStack pastack) { return pastack-t == -1; } void push_seq(PSeqStack pastack, DataType x) { if (pastack-t = MAXNUM - 1) printf(溢出!\n); else { pastack-t = pastack-t + 1; pastack-

文档评论(0)

1亿VIP精品文档

相关文档