time limit: 1000ms
memory limit: 65536kb
submit
statistic
discuss
problem description
小明在學習了資料結構之後,突然想起了以前沒有解決的算術表示式轉化成字尾式的問題,今天他想解決一下。
因為有了資料結構的基礎小明很快就解出了這個問題,但是他突然想到怎麼求出算術表示式的字首式和中綴式呢?小明很困惑。聰明的你幫他解決吧。
input
輸入一算術表示式,以\'#\'字元作為結束標誌。(資料保證無空格,只有一組輸入)
output
輸出該表示式轉換所得到的字首式 中綴式 字尾式。分三行輸出,順序是字首式 中綴式 字尾式。
example input
a*b+(c-d/e)*f#
example output
+*ab*-c/defa*b+c-d/e*f
ab*cde/-f*+
hint
#include#includeusing namespace std;
char b[100010], s[100010] , print[100010];
int swi(char c)//字首式優先順序
int swa(char c)//字尾式優先順序
void display(int k)
//逆序讀取陣列,存入輸出陣列,再逆序輸出
void qian(int n)
s[++top] = c;}}
else
top--;}}
if(top!=0)
display(k);
}void hou(int n)
}else
top--;
}else s[++top] = c;}}
}if(top!=0)
cout << endl;
}int main()
cout << endl;
hou(n);
return 0;
}
中綴式轉字首式 轉字尾式
1 從左向右讀取字元,新建陣列suffix用來儲存字尾表示式 2 如果遇到 入棧,繼續讀取。3 如果遇到 將棧頂元素依次出棧存到suffix中,直到棧頂元素為 此時將棧頂元素出棧,繼續讀取。4 如果遇到運算子,將其與棧頂元素進行比較,如果該運算子優先順序小於等於棧頂元素,則將棧頂元素出棧,存到suf...
中綴式轉字尾式
棧底放 用來標記棧底,從左至右逐字讀取中綴式 a.當當前字元為數字時,直接輸出 b.當當前字元為 時,將其壓棧 c.當當前字元為 時,則彈出堆疊中最上的 之前的所有運算子並輸出,然後刪除堆疊中的 d.當當前字元為運算子時,則依次彈出堆疊中優先順序大於等於當前運算子的 到 之前為止 輸出,再將當前運算...
中綴式變字尾式
時間限制 1000 ms 記憶體限制 65535 kb難度 3描述 輸入第一行輸入乙個整數n,共有n組測試資料 n 10 每組測試資料只有一行,是乙個長度不超過1000的字串,表示這個表示式的中綴式,每個表示式都是以 結束。這個表示式裡只包含 與小括號這幾種符號。其中小括號可以巢狀使用。資料保證輸入...