PTA 表示式轉換

2021-08-20 16:13:03 字數 1687 閱讀 6064

算術表示式有字首表示法、中綴表示法和字尾表示法等形式。日常使用的算術表示式是採用中綴表示法,即二元運算子位於兩個運算數中間。請設計程式將中綴表示式轉換為字尾表示式。

輸入格式:

輸入在一行中給出不含空格的中綴表示式,可包含+、-、*、\以及左右括號(),表示式不超過20個字元。

輸出格式:

在一行中輸出轉換後的字尾表示式,要求不同物件(運算數、運算符號)之間以空格分隔,但結尾不得有多餘空格。

輸入樣例:

2+3*(7-4)+8/4

輸出樣例:

2 3 7 4 - * + 8 4 / +

code:

#include 

#include

//測試點

//2: ((2+3)*4-(8+2))/5 2 3 + 4 * 8 + - 5 /

//3: 1314+25.5*12 1314 25.5 12 * +

struct fuhao ;

void symbol_yz(struct fuhao *s, char c) //壓入符號棧

char symbol_cz(struct fuhao *s) //符號棧出棧

char symbol_dz(struct fuhao *s) //讀符號棧棧頂元素

int judge(char c)

else

if(c == '+' || c == '-')

else

if(c == '*' || c == '/')

else

if(c == ')')

return j;

}int main(void)

; int i = 0, k = 0, cnt = 0, flag = 1;

gets(s);

for(i = 0; s[i] != '\0'; i ++)

putchar(s[i]);

}while(s[i+1] == '.' || s[i+1] >= '0' && s[i+1] <= '9')

putchar(s[++i]);

}flag = 0;

}else

else

if(judge(s[i]) == 4)

putchar(symbol_cz(&symbol));

flag = 0;

}symbol_cz(&symbol); //讓符號'('出棧

}else

if(judge(symbol_dz(&symbol)) < judge(s[i]))

else

if(judge(symbol_dz(&symbol)) >= judge(s[i]))

putchar(symbol_cz(&symbol));

flag = 0;

}symbol_yz(&symbol, s[i]);}}

}

while(symbol.t > -1)

putchar(symbol_cz(&symbol));

flag = 0;

} return

0;}

表示式轉換 中綴表示式轉換為字尾表示式

算術表示式有字首表示法 中綴表示法和字尾表示法等形式。日常使用的算術表示式是採用中綴表示法,即二元運算子位於兩個運算數中間。請設計程式將中綴表示式轉換為字尾表示式。輸入格式 輸入在一行中給出不含空格的中綴表示式,可包含 以及左右括號 表示式不超過20個字元。輸出格式 在一行中輸出轉換後的字尾表示式,...

PTA資料結構之表示式轉換

算術表示式有字首表示法 中綴表示法和字尾表示法等形式。日常使用的算術表示式是採用中綴表示法,即二元運算子位於兩個運算數中間。請設計程式將中綴表示式轉換為字尾表示式。輸入在一行中給出不含空格的中綴表示式,可包含 以及左右括號 表示式不超過20個字元。在一行中輸出轉換後的字尾表示式,要求不同物件 運算數...

表示式轉換

2 3 7 4 8 4 2 3 7 4 8 4 思路 a.若為 入棧 b.若為 則依次把棧中的的運算子加入字尾表示式中,直到出現 從棧中刪除 c.若為 除括號外的其他運算子,當其優先順序高於除 以外的棧頂運算子時,直接入棧。否則從棧頂開始,依次彈出比當前處理的運算子優先順序高和優先順序相等的運算子,...