设计将中缀表达式转换为前缀表达式的算法_第1页
设计将中缀表达式转换为前缀表达式的算法_第2页
设计将中缀表达式转换为前缀表达式的算法_第3页
设计将中缀表达式转换为前缀表达式的算法_第4页
设计将中缀表达式转换为前缀表达式的算法_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、设计将中缀表达式转换为前缀表达式的算法1111)求输入串的逆序。2)检查输入的下一元素。3)假如是操作数,把它添加到输出串中。4)假如是闭括号,将它压栈。5)假如是运算符,则i)假如栈空,此运算符入栈。ii)假如栈顶是闭括号,此运算符入栈。iii)假如它的优先级高于或等于栈顶运算符,此运算符入栈。iv)否则,栈顶运算符出栈并添加到输出串中,重复步骤5。6)假如是开括号,栈中运算符逐个出栈并输出,直到遇到闭括号。闭括号出栈并丢弃。7)假如输入还未完毕,跳转到步骤2。8)假如输入完毕,栈中剩余的所有操作符出栈并加到输出串中。9)求输出串的逆序。*/#include#includeusing nam

2、espace std;char stack50;/定义顺序栈,其中第一个元素表示栈为空;int top=0;/栈顶指针,为0表示栈为空;int level(char op)/判断运算符级别函数;其中* /的级别为2,+ -的级别为1; int level; switch(op) case+: case-:level=1; break; case*: case/:level=2; break; default:level=0;break; return level;bool isOperator(char op)/判断输入串中的字符是不是操作符,如果是返回true if(op=+|op=-|op

3、=*|op=/) return true; else return false;string convert(string s)/将一个中缀串转换为后缀串, string output=;/输出串 for(int i=s.length()-1;i=0;)/1)求输入串的逆序。 if(si=48&si=level(stacktop) top+; stacktop=si; break; else output=output+stacktop; top-; if(si=()/6)假如是开括号,栈中运算符逐个出栈并输出,直到遇到闭括号。闭括号出栈并丢弃。 while(stacktop!=) output=output+stacktop; top-; top-; i-;/7)假如输入还未完毕,跳转到步骤2。 while(top!=0)/8)假如输入完毕,栈中剩余的所有操作符出栈并加到输出串中。 output=output+stacktop; top-; return output;int main() string input,output; coutinput; output=convert(inpu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论