表示式轉換

2021-08-16 16:43:49 字數 936 閱讀 3935

+-

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

2 3 7 4 - * + 8 4 / +

思路:a. 若為

'(',入棧;

b. 若為

')',則依次把棧中的的運算子加入字尾表示式中,直到出現

'(',從棧中刪除

'('

;c. 若為 除括號外的其他運算子, 當其優先順序高於除

'('以外的棧頂運算子時,直接入棧。

否則從棧頂開始,依次彈出比當前處理的運算子優先順序高和優先順序相等的運算子,

直到乙個比它優先順序低的或者遇到了乙個左括號為止。

·當掃瞄的中綴表示式結束時,棧中的的所有運算子出棧;

#include#includeint isnum(char ch);

int zhengfu(char ch);

int compare(char a,char b);

void f(char *a,int len);

int main()

int isnum(char ch)

int zhengfu(char ch)

int compare(char a,char b)

}void f(char *a,int len)

printf("%c",a[i]);

}else if(zhengfu(a[i])&&(i?!isnum(a[i-1])&&a[i-1]!=')':1))

printf("%c",a[i]);}}

else

else

else break;

}stack[top++]=a[i];}}

else stack[top++]=a[i];

for(int j=0;jif(stack[j]!='(')}}

while(top)

}

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

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

表示式轉換

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

表示式轉換

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