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