字首 中綴 字尾表示式(逆波蘭表示式)

2021-10-13 21:33:09 字數 2508 閱讀 3790

字首表示式又稱為波蘭表示式,字首表示式的運算子位於運算元之前

(3+4)×5-6對應的字首表示式就是-×+3456

從右至左掃瞄表示式,遇到數字時,將數字壓入棧中,遇到運算子時,彈出棧頂的兩個數,運算子對他們做相應的計算(棧頂元素和次頂元素),並將結果入棧;重複上述過程知道掃瞄至表示式的最左端,最後運算的出的結果即為表示式的結果

舉例說明:

中綴表示式就是常見的運算表示式,如(3+4)×5-6

中綴表示式的求值是我們人最為熟悉的表示式,但是對計算機來說卻不好操作,因此在計算結果時,往往會將中綴表示式轉成其他表示式來操作(一般轉為字尾表示式)

思路分析

* 將中綴表示式轉成對應的list

* @param s 要轉換的中綴表示式字串

* @return 中綴表示式字元集合

*/public

static list

toinfixexpressionlist

(string s)

else

ls.add(str);}

}while

(i < s.

length()

);return ls;

}/**

* 將得到的中綴表示式對應的list轉換為字尾表示式

* @param infixexpressionlist 中綴表示式的list集合

* @return 字尾表示式的list集合

*/public

static list

parassuffixexpressionlist

(list

infixexpressionlist)

else

if(item.

equals

("("))

else

if(item.

equals

(")"))

s1.pop();

//將左括號彈出棧

}else

s1.push

(item);}

}//將s1中剩餘的運算子依次彈出並加入s2

while

(s1.

size()

!=0)return s2;

}判斷符號優先順序的類

class

operation

return result;

}}

字尾表示式也稱之為逆波蘭表示式,與字首表示式相似,只是運算子位於運算元之後

/** * 將乙個逆波蘭表示式中的字元依次放如arraylist中

* @param suffixexpression 逆波蘭表示式每個字元以空格分割

* @return 只包含數字和符號的逆波蘭表示式字元集合

*/public

static list

getliststring

(string suffixexpression)

return list;

}/**

* 完成對逆波蘭表示式的運算

* 1、從左至右掃瞄,將3和4壓入堆疊

* 2、遇到+運算子,因此彈出4和3(4為棧頂元素3為次頂元素),計算出3+4的值=7,再將7入棧

* 3、將5入棧

* 4、接下來是*運算子,因此彈出5和7,計算出7*5=35,將35入棧

* 5、將6入棧

* 6、最後是-運算子,計算出35-6的值,即29,由此得出最終結果

** @return 返回最終結果

*/public

static

intcalculate

(list

ls)else

else

if(item.

equals

("-"))

else

if(item.

equals

("*"))

else

if(item.

equals

("/"))

else

//把res入棧

stack.

push(""

+res);}

}return integer.

parseint

(stack.

pop());}}

字首 中綴 字尾表示式 逆波蘭表示式

遇到 運算子,因此彈出3和4 3為棧頂元素,4為次頂元素,注意與字尾表示式做比較 計算出3 4的值,得7,再將7入棧 接下來是 運算子,因此彈出7和5,計算出7 5 35,將35入棧 最後是 運算子,計算出35 6的值,即29,由此得出最終結果 從右至左掃瞄中綴表示式 遇到運算元時,將其壓入s2 遇...

字首 中綴 字尾表示式 逆波蘭表示式

字首表示式 中綴表示式 字尾表示式都是四則運算的表達方式,用以四則運算表示式求值 即數學表示式的求職 中綴表示式就是常見的運算表示式,如 3 4 5 6 字首表示式又稱波蘭式,字首表示式的運算子位於運算元之前 比如 3 4 5 6 從右至左掃瞄表示式,遇到數字時,將數字壓入堆疊,遇到運算子時,彈出棧...

字首 中綴 字尾表示式 逆波蘭表示式

字首表示式 中綴表示式 字尾表示式都是四則運算的表達方式,用以四則運算表示式求值,即數學表示式的求值。中綴表示式就是常見的運算表示式,如 3 4 5 6 字首表示式又稱波蘭式,字首表示式的運算子位於運算元之前 比如 3 4 5 6 從右至左掃瞄表示式,遇到數字時,將數字壓入堆疊,遇到運算子時,彈出棧...