1. 程式人生 > >利用堆疊進行表示式求值的方法(二)

利用堆疊進行表示式求值的方法(二)

開發十年,就只剩下這套架構體系了! >>>   

利用堆疊進行表示式求值的方法(一)中描述的方法並不能解決“(1+((2*3+4)*(4*5))”該問題,現將2個堆疊變成1個堆疊,方法如下:

1、將表示式從左到右開始逐個將左括號、數值和操作符壓入棧中;

2、遇到右括號時,將棧中元素逐個彈出,直到彈出左擴號為止;

3、將彈出的元素存放置一個臨時的線性集合中(陣列、連結串列或者堆疊中),如果是陣列和連結串列從後向前依次遍歷出子表示式,並按照加減乘除的優先順序計算表示式的值,然後再將值壓入棧中;

4、重複1~3的步驟,最後計算的值為表示式的最終結果。

使用該方法可以解決類似於a  and  b  not  c這樣的邏輯運算問題,後面的重點還是討論如何將該方法用於正則表示式轉換成非確定性