1003. 中綴表示式轉字尾表示式
total:
466accepted:89
time limit: 1sec memory limit:256mb
description
將中綴表示式(infix expression)轉換為字尾表示式(postfix expression)。
假設中綴表示式中的運算元均以單個英文本母表示,且其中只包含雙目算術操作符+,-,*,/和%。
input
表示中綴表示式的乙個字串(其中只包含運算元和操作符,不包含任何其他字元)
output
表示對應後
綴表示式的乙個字串(其中只包含運算元和操作符,不包含任何其他字元)
sample input
a+b*c-d-e/fsample output
abc*+d-ef/-
#include #include #include using namespace std;
bool isoper(char a)
int rank(char a)
int main() else else
op.push(str[i]);}}
}while(!op.empty())
}
基本演算法,利用棧:
中綴表示式轉字尾表示式的演算法較為簡單,採用棧來實現。規則如下:
遇到數字:直接輸出
遇到'(':壓棧
遇到')':持續出棧,如果出棧的符號不是'('則輸出,否則終止出棧。
遇到符號則判斷該符號與棧頂符號的運算優先順序,如果棧頂符號的運算優先順序高,則出棧並輸出,直到優先順序相等或棧為空;如果棧頂符號的運算優先順序低於當前符號的運算優先順序,則將當前符號壓棧。
處理完字串後將棧中剩餘的符號全部輸出。
SzNOI c003 中綴表示式轉字尾表示式
個人覺得我寫的應該是目前網上寫的版本比較簡單的了。這也是我開部落格的原因,盡量寫出簡單的 一方面可以鞏固自己,一方面也能方便別人 中綴表示式轉化為字尾表示式是通過棧實現 思路是,寫兩個函式,分別是算術操作符的優先順序,這個想法在資料結構 用物件導向方法與c 裡面這本書有大概提到 isp是棧內優先數,...
9 中綴表示式轉成字尾表示式
private static int add 1 private static int sub 1 private static int mul 2 private static int div 2 寫乙個方法,返回對應的優先順序數字 public static int getvalue strin...
中綴表示式轉字尾表示式
using system using system.collections.generic using system.text namespace 中綴表示式轉字尾表示式 class convert public void run top break case case while top 1 st...