資料結構之逆波蘭計算器

2021-10-09 01:54:02 字數 705 閱讀 1923

逆波蘭計算器也稱為字尾計算器,逆波蘭表示式形如「30 4 + 5 * 6 -」,其對應的中綴表示式為「(30+4)*5-6」,這次我利用棧結構實現乙個逆波蘭表示式的簡單版計算器。先說說實現思路:

先將表示式轉化成list集合;

順序遍歷集合,如果當前元素是數字,壓入棧中;如果當前元素是操作符,彈出棧中的兩個元素進行計算,並將結果壓入棧中,直到集合中的元素全部遍歷完;

棧中最後的元素就是計算結果。

**:

public class polandnotation 

//將字尾表示式拆分,放入list集合中並返回list

public static listtolist(string srt)

return list;

}//根據集合中的元素,利用棧進行簡單的整數計算

//當前元素是數字,直接入棧,是操作符則出棧兩個數進行運算,在將運算結果放入棧中

public static int cal(listlist)else else if (item.equals("-"))else if (item.equals("*"))else if (item.equals("/"))else

stack.push(""+res);}}

return integer.parseint(stack.pop());

}}

需要注意的是在每次計算完結果後,都需要將結果入棧!

逆波蘭計算器

include include include define stack init size 20 初始化棧的空間 define stackincrement 10 擴充套件空間 define maxbuffer 10 最大緩衝區 typedef double elemtype 建立乙個棧 type...

逆波蘭計算器

1.逆波蘭表示式用途 逆波蘭表示式是一種十分有用的表示式,它將複雜表示式轉換為可以依靠簡單的操作得到計算結果的表示式。例如 a b c d 轉換為ab cd 2.逆波蘭表示式邏輯實現 如果當前字元為變數或者為數字,則壓棧,如果是運算子,則將棧頂兩個元素彈出作相應運算,結果再入棧,最後當表示式掃瞄完後...

逆波蘭計算器

遍歷表示式。碰到數字將其放到棧中。遇到計算符 從棧中彈出兩個數用計算然後再從新入棧。a 在棧中的最後乙個數即為結果 轉換前 2 9 6 3 5 4轉換後 2963 5 4 使用逆波蘭計算結果為 16.0public class rpncalculator 如果是不是計算符,直接入棧 stack.pu...