中綴式 字首式 字尾式 轉換

2021-08-09 17:33:48 字數 1120 閱讀 8523

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/def

a*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的字串,表示這個表示式的中綴式,每個表示式都是以 結束。這個表示式裡只包含 與小括號這幾種符號。其中小括號可以巢狀使用。資料保證輸入...