C++栈实现将中缀表达式转换为后缀表达式.docVIP

  • 31
  • 0
  • 约3.96千字
  • 约 4页
  • 2019-07-03 发布于浙江
  • 举报

C++栈实现将中缀表达式转换为后缀表达式.doc

5 将中缀表达式转换为后缀表达式 【问题描述】表达式转换。输入的中缀表达式为字符串,转换得到的后缀表达式存入字符数组中并输出。 例如: a*(x+y)/(b-x) 转换后得: a x y + * b x - / 【数据结构】 定义一个暂时存放运算符的转换工作栈opst。 中缀表达式字符串char *infix; 后缀表达式字符串char *postfix; 【算法提示】转换规则:把运算符移到它的两个操作数后面,删除掉所有的括号。 从头到尾扫描中缀表达式,对不同类型的字符按不同情况处理: 数字或小数点,直接写入字符串postfix,并在每个数值后面写入一个空格; 左括号,进栈,直到遇见相配的右括号,才出栈; 右括号,表明已扫描过括号内的中缀表达式,把从栈顶直到对应左括号之间的运算符依次退栈,并把结果推入栈内; 对于运算符,分两种情况处理: 该运算符的优先级大于栈顶符号的优先级,则入栈; 若该运算符的优先级小于栈顶优先级,则先弹出栈顶运算符、写入postfix串;继续将该运算符与栈顶运算符比较,直到能把它推入栈内为止(即优先级大于栈顶运算符)。 说明:自行设计运算符优先级的表示。 【主要代码】 #include assert.h #include iostream.h //#include stdlib.h const int stackIncreament=20; class

文档评论(0)

1亿VIP精品文档

相关文档