字尾表示式求值

2021-08-10 05:48:14 字數 944 閱讀 5359

字尾表示式求值過程中不需要考慮運算子的優先順序,只需要對該表示式中的每乙個元素進行判斷,若為運算元則將其儲存在乙個陣列裡(入棧),若為運算子則取出前面的兩個運算元(彈棧)並運算,並將運算結果放回該陣列(入棧),最終陣列的最後乙個元素(棧頂元素)即為該表示式的運算結果.

如: 字尾表示式 "23+=" 等價於中綴表示式: "2+3="  運算結果為: 5

字尾表示式 "56*=" 等價於中綴表示式: "5*6="  運算結果為: 30

字尾表示式 "12+82-74-/*=" 等價於中綴表示式: "(1+2)*(8-2)/(7-4)"  運算結果為: 6

emmmm.... 別的不說,先上**吧.

#include

#include

#include

#define max 100

int main(void)      //字尾表示式求值

*//*字尾表示式求值*/

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

else     //arr[i]若為運算子則同前兩個數字一起運算}}

printf("該表示式的值為: %d\n",stack[j - 1]);    

return 0;

}字尾表示式求值有乙個很大的弊端,那就是只能對個位數進行運算,要想摒除這個弊端很簡單,單單用結構體指標就可以解決問題.這裡我拋磚引玉就不再對其鍊錶實現方式進行描述.

另外,再放上我的執行結果.

字尾表示式求值

題目描述 為了便於處理表示式,常常將普通表示式 稱為中綴表示 轉換為字尾sqstack 順序棧的初始化 status initstack sqstack s 順序棧的入棧 status push sqstack s,selemtype e 演算法3.3 順序棧的出棧 status pop sqsta...

字尾表示式求值

根據 逆波蘭表示法,求表示式的值。有效的算符包括 每個運算物件可以是整數,也可以是另乙個逆波蘭表示式。說明 整數除法只保留整數部分。給定逆波蘭表示式總是有效的。換句話說,表示式總會得出有效數值且不存在除數為 0 的情況。示例 1 輸入 tokens 2 1 3 輸出 9 解釋 該算式轉化為常見的中綴...

字尾表示式求值

include include include 鏈棧 typedef struct node node typedef struct stack stack 佇列 typedef struct queuenode queuenode typedef struct queue queue 初始化棧 s...