将中缀表达式转换为后缀表达式 c++程序

将中缀表达式转换为后缀表达式 c++程序

ID:12762489

大小:41.50 KB

页数:3页

时间:2018-07-18

将中缀表达式转换为后缀表达式 c++程序_第1页
将中缀表达式转换为后缀表达式 c++程序_第2页
将中缀表达式转换为后缀表达式 c++程序_第3页
资源描述:

《将中缀表达式转换为后缀表达式 c++程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、5将中缀表达式转换为后缀表达式【问题描述】表达式转换。输入的中缀表达式为字符串,转换得到的后缀表达式存入字符数组中并输出。例如:a*(x+y)/(b-x)转换后得:axy+*bx-/【数据结构】l定义一个暂时存放运算符的转换工作栈opst。l中缀表达式字符串char*infix;l后缀表达式字符串char*postfix;【算法提示】转换规则:把运算符移到它的两个操作数后面,删除掉所有的括号。从头到尾扫描中缀表达式,对不同类型的字符按不同情况处理:l数字或小数点,直接写入字符串postfix,并在每个数值后

2、面写入一个空格;l左括号,进栈,直到遇见相配的右括号,才出栈;l右括号,表明已扫描过括号内的中缀表达式,把从栈顶直到对应左括号之间的运算符依次退栈,并把结果推入栈内;l对于运算符,分两种情况处理:u该运算符的优先级大于栈顶符号的优先级,则入栈;u若该运算符的优先级小于栈顶优先级,则先弹出栈顶运算符、写入postfix串;继续将该运算符与栈顶运算符比较,直到能把它推入栈内为止(即优先级大于栈顶运算符)。说明:自行设计运算符优先级的表示。【主要代码】3#include#include

3、ssert.h>#include#includeconstintstackIncreament=0;classopst{public:opst(intsz=50){maxSize=sz;top=-1;elements=newchar[maxSize];assert(elements!=NULL);}~opst(){delete[]elements;}boolIsEmpty(){return(top==-1)?true:false;}boolIsFull(){return(

4、top==maxSize-1)?true:false;}voidPush(char&x);boolPop(char&x);boolgetTop(char&x);intgetSize()const{returntop+1;}voidMakeEmpty(){top=-1;}voidinput();voidConvert();friendostream&operator<<(ostream&os,opst&s);private:char*elements;inttop;intmaxSize;voidoverflo

5、wProcess();};voidopst::overflowProcess()//溢出处理{char*newArray=newchar[maxSize+stackIncreament];for(inti=0;i<=top;i++)newArray[i]=elements[i];maxSize=maxSize+stackIncreament;delete[]elements;elements=newArray;}voidopst::Push(char&x){3if(IsFull()==true)overfl

6、owProcess();elements[++top]=x;}boolopst::Pop(char&x){if(IsEmpty()==true)returnfalse;x=elements[top--];returntrue;}boolopst::getTop(char&x){if(IsEmpty()==true)returnfalse;x=elements[top];returntrue;}ostream&operator<<(ostream&os,opst&s){os<<"top=="<

7、endl;for(inti=0;i<=s.top;i++)os<Push(ch[i]);i++;}ch[i]='#';}boolisdigit(char&x){if((x>='a'&&x<='z')

8、

9、(x>='A'&&x<='Z')

10、

11、

12、(x>='0'&&x<='9'))returntrue;elsereturnfalse;}intisp(char&x)//设置栈内优先级{switch(x){case'#':{return0;break;}case'(':{return1;break;}case'*':case'/':case'%':{return5;break;}case'+':case'-':{return3;break;}case')':{

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

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

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