計算字尾表示式的演算法

2021-07-11 07:13:37 字數 848 閱讀 3287

計算字尾表示式的演算法

(1) 建立乙個儲存數字的棧;

(2) 從左到右依次逐個掃瞄字尾表示式;

(3) 若是數字,則將字元轉換成數字後存入棧;

(4) 若是』*』,則獲取並刪除兩個棧頂元素,對得到的值進行乘法運算併入棧;

(5) 若是』/』,則獲取並刪除兩個棧頂元素,對得到的值進行除法運算併入棧;

(6) 若是』+』,則獲取並刪除兩個棧頂元素,對得到的值進行加法運算併入棧;

(7) 若是』-『,則獲取並刪除兩個棧頂元素,對得到的值進行減法運算併入棧;

(8)獲取並刪除棧頂元素的值;

舉例

這裡字尾表示式的格式:數字後面加'.'(舉例:4. 5. +)

*/int expbackcompute(char * expback)

while('.' != expback[i]);

pushstack(&s2,k);

}else

if('*' == expback[i])

else

if('/' == expback[i])

else

if('+' == expback[i])

else

i++;

}getdeltop(&s2,&result);

return result;

}

字尾表示式計算

演算法 1.遍歷字尾表示式中的數字和符號 對於數字 進棧 對於符號 從棧中彈出右運算元 從棧中彈出左運算元 根據符號進行運算 將運算結果壓入棧中 2.遍歷結束 棧中的唯一數字為計算結果 include include linkstack.h int isnumber char c int isope...

字尾表示式計算

將中綴表示式轉換為字尾表示式 與轉換為字首表示式相似,遵循以下步驟 1 初始化兩個棧 運算子棧s1和儲存中間結果的棧s2 2 從左至右掃瞄中綴表示式 3 遇到運算元時,將其壓入s2 4 遇到運算子時,比較其與s1棧頂運算子的優先順序 4 1 如果s1為空,或棧頂運算子為左括號 則直接將此運算子入棧 ...

字尾表示式計算

字尾表示式這樣一種型別的表示式,運算元在前,操作符在後。例如這樣的一位數字尾表示式 32 5 4 對等的四則表示式為 3 2 5 4。試編寫程式,求解乙個一位數的字尾表示式計算,表示式支援 操作,其中 為整除。輸入 表示式輸出 計算值樣例輸入 32 5 4 樣例輸出 21提示 可使用棧 解題關鍵 1...