資源簡(jiǎn)介
用c++中的堆棧實(shí)現(xiàn)中綴表達(dá)式變后綴表達(dá)式
代碼片段和文件信息
#include
#include
using?namespace?std;
char?stack[50];//定義順序棧,其中第一個(gè)元素表示棧為空;
int?top=0;//棧頂指針,為0表示棧為空;
int?level(char?op)//判斷運(yùn)算符級(jí)別函數(shù);其中*?/的級(jí)別為2,+?-的級(jí)別為1^為3,默認(rèn)為0;
{
int?level;
switch(op)
{
case?‘+‘:
case?‘-‘:level=1;break;
case?‘*‘:
case?‘/‘:level=2;break;
case?‘^‘:level=3;break;
default:?level=0;break;
}
return?level;
}
bool?isOperator(char?op)//判斷輸入串中的字符是不是操作符,如果是返回true
{
if(op==‘+‘||op==‘-‘||op==‘*‘||op==‘/‘||op==‘^‘)
return?true;
else?
return?false;
}
string?convert(string?s)//將一個(gè)中綴串轉(zhuǎn)換為后綴串
{
????string?output=““;//輸出串
????for(int?i=0;i<=s.length();i++)
???????{
??????????????if((s[i]>=48?&&?s[i]<=57)||(s[i]>=‘a(chǎn)‘?&&?s[i]<=‘z‘))
?????????????????????output=output+s[i];//假如是操作數(shù),把它添加到輸出串中。
??????????????if(s[i]==‘(‘)
??????????????{
?????????????????????top++;
?????????????????????stack[top]=s[i];
??????????????}
??????????????while(isOperator(s[i]))
評(píng)論
共有 條評(píng)論