運算子定義優先順序:# ( + - * /
-1 0 1 1 2 2
從原表示式求字尾式的規則為:
1.新建運算子棧,棧底元素為"#"(作為運算子棧的結束符號),從第乙個位置起掃瞄表示式
2.若當前字元是運算元,則直接傳送給字尾表示式,掃瞄位置加1;
3.若當前字元為運算子且優先順序大於棧頂運算子,則進棧,掃瞄位置加1。
4.若當前字元為運算子且優先順序不大於(小於等於)棧頂運算子,則退出棧頂運算子並將其傳送給字尾式,並將將當前運算子放入棧中,掃瞄位置不變。
5.若當前字元為"(",直接進棧,掃瞄位置加1。
6.若當前字元為")",則從棧頂起,依次將棧中"("之前的運算子出棧並傳送給字尾式,並將棧中"("出棧,掃瞄位置加1。
7.若當前字元是結束符,則將棧中的全部運算子依次傳送給字尾式(不包括運算子的結束符號)。
**如下:
char *rpexpression(char *e)/* 返回表示式e的逆波蘭式 */
switch(e[i])
else
}case '*':
case '/':
else
}case '(':
case ')':
pop(s,c);
break;
}}
}while(top(s)!='#')
t[j]='\0';
return t;
}
表示式括號匹配
假設乙個表示式有英文本母 小寫 運算子 和左右小 圓 括號構成,以 作為表示式的結束符。請編寫乙個程式檢查表示式中的左右圓括號是否匹配,若匹配,則返回 yes 否則返回 no 表示式長度小於255,左圓括號少於20個。輸入格式 一行 表示式 輸出格式 一行 yes 或 no 輸入樣例 1 2 x y...
表示式括號匹配
假設乙個表示式有英文本母 小寫 運算子 和左右小 圓 括號構成,以 作為表示式的結束符。請編寫乙個程式檢查表示式中的左右圓括號是否匹配,若匹配,則返回 yes 否則返回 no 表示式長度小於255,左圓括號少於20個。輸入格式 一行 表示式 輸出格式 一行 yes 或 no include incl...
表示式括號匹配
假設乙個表示式有英文本母 小寫 運算子 和左右小 圓 括號構成,以 作為表示式的結束符。請編寫乙個程式檢查表示式中的左右圓括號是否匹配,若匹配,則返回 yes 否則返回 no 表示式長度小於255,左圓括號少於20個。include using namespace std int top 0 inl...