表示式求值時資料結構的基礎演算法之一,其主要思想就是堆疊的使用。下面將詳細的介紹演算法的各個部分:
表示式求值演算法主要流程如下:
首先要說明的是字尾表示式,字尾表示式即 不包含括號,運算子放在兩個運算物件的後面,所有的計算按運算子出現的順序,嚴格從左向右進行(不再考慮運算子的優先規則,如:(2 + 1) * 3 , 即2 1 + 3 *。轉換成字尾表示式的原因是方便及更有條理的計算。
那麼又該如何將普通表示式轉換成字尾表示式呢?
在轉換過程中要用到乙個運算子堆疊,用來儲存臨時運算子。轉換判斷條件如下:
在轉換過程中要注意以下幾點:
①、在讀到末尾'\0'後要注意把運算子堆疊內的剩餘元素依次存入字尾表示式。
②、在讀到乙個數字後要將後面剩餘的數字也依次存入字尾表示式,並且要最後新增#作為各個數字的分隔符。
③、在計算字尾表示式時將讀入的數字字串轉換成整數並存入數字堆疊。
④、計算字尾表示式時遇到計算符號則從數字堆疊中退出2個數字,計算出值後再存入數字堆疊。
資料結構表示式
35,15,80,70,20,字尾表達方式 35 15 80 70 20 25 中綴表達方式 35,15,80,70,20 字首表達方式 人的思維方式很容易固定 正如習慣拉10進製。就對2,3,4,8,16 等進製不知所措一樣 人們習慣的運算方式是中綴表示式。而碰到字首,字尾方式。迷茫 其實僅僅是一...
資料結構 中綴表示式的計算
package com.cubemonkey.stack 使用棧完成表示式的計算 author cubemonkey create 2020 06 04 18 41 public class calculator return num 判斷指定字元是不是數字 param ch return publ...
資料結構 表示式求值
一 實驗目的 通過乙個具體實際應用例子,加深對資料結構課程的理解,能夠綜合利用資料結構以及c語言的知識設計程式,應用到實際問題中去。二 實驗題目 常見的小型計算器可以通過輸入乙個由運算元和操作符組成的表示式計算出結構,設計乙個程式模擬上述功能。本實驗要求至少建立兩個棧和乙個運算子優先順序比較表,按照...