輸入字串格式的算術表示式,如: 「3+2*」;輸出去結果。
棧的應用;
四則運算分為下列四個過程
讀取字串 (並不是簡單地讀入,比如 當字串中有兩位數,例如12時,我們應該讀成 「12」而不是「1」,「2」,不然運算會出現錯誤)。
處理字串,給字串加0 (為了保證字尾運算的正常執行,需要對出現的負數進行考慮。 例如 (-4 + 3) 為了運算正確,將其處理成(0 - 4 +3))
將中綴表示式轉化成字尾表示式
計算字尾表示式
public
class
main",
")")
; s = s.
replaceall
("\\]"
,")");
char
chars = s.
tochararray()
;// 讀取字串
list
all =
newarraylist
<
>()
;int len = s.
length()
;int i=0;
while
(iif(offset !=0)
else
}// 給字串加 0
list
list =
newarraylist
<
>()
;for
(int j=
0; jsize()
; j++
)else}}
list.
add(all.
get(j));
} list
postexpre =
getpostexpre
(list)
; system.out.
println
(caculate
(postexpre));
}// 將中綴表示式轉為字尾表示式
public
static list
getpostexpre
(list
list)
else
if(tmp.
equals
("("
)|| tmp.
equals
("*"
)|| tmp.
equals
("/"))
else
if(tmp.
equals
(")"))
else}}
else
if(tmp.
equals
("+"
)|| tmp.
equals
("-"))
else
else
} ops.
push
(tmp);}
}}for(
int j=ops.
size()
-1; j>=
0; j--
)return post;
}// 計算字尾表示式
public
static
intcaculate
(list
post)
else
else
if(tmp.
equals
("-"))
else
if(tmp.
equals
("*"))
else
if(tmp.
equals
("/"))
vals.
push
(val);}
}return vals.
pop();
}}
棧的應用 簡單四則運算
思想 我們平時輸入的四則運算表示式,例如 9 3 1 2,屬於中綴表示式。我們需要將它轉換成字尾表示式 9 3 1 2 的形式求值。其中需要兩個棧 數字棧和運算子棧。過程 逐個讀取中綴表示式 char型 9 3 1 2 1.如果是數字則壓入數字棧 如果是大於一位的數字則需要寫個函式轉換成int型 2...
棧的應用 四則運算 c
四則運算主要分為兩個部分 中綴轉字尾 規則為 先遍歷中綴表示式的每乙個字元,如果是數字直接輸出到字尾表示式,如果是符號,需要判斷與棧頂符號的優先順序,是右括號或者優先順序高於棧頂符號 乘除優先於加減 則依次輸出出棧並輸出,然後將當前符號壓入棧。這裡把符號分為幾類 入棧 棧頂符號依次出棧並輸出直到棧頂...
棧的實際應用 四則運算
四則運算 計算機在進行運算過程會先將中綴轉成字尾進行計算。中綴表示式 9 6 3 8 4 字尾表示式 96 3 84 中綴轉字尾規則 借助輔助棧,遇到數字或字母,列印 遇到符號,將當前符號與棧頂符號進行優先順序比較。如果當前符號優先順序高,則直接入棧,如果當前符號優先順序較低,則將棧頂元素依次出棧,...