這次的實作stack 堆疊
如同字面上的意思 一堆資料疊在一起
像盤子一樣((好老套的說法
要拿 從最上面的開始拿
雲淡風清 發表在 痞客邦 留言(0) 人氣(2,344)
鏈結串列是個好玩的東西
只是單純的利用 Node類別的互相鏈結
就創造出許多不同的用法
class Node
{
Node link;
int data;
}
雲淡風清 發表在 痞客邦 留言(0) 人氣(8,267)
主要是利用堆疊的先進後出的特性來計算
如 A - B / C + ( D * E ) - F
轉成後置式的話為A B C / - D E * + F -
至於怎麼轉呢.. 直覺吧 反正就是要算的 放到右邊?
課本是用括號 滿麻煩的
像是
A - B / C + (D * E ) - F
A - (B / C) + (D * E) - F
A ( B C / ) - ( D E * ) + F -
A B C / - D E * + F -
轉成後置式後可以方便使用堆疊來計算結果
規則為 :
1.遇到運算子(+ - * / ...)就從堆疊提兩個運算元出來計算
2.遇到運算元 就存入堆疊裡
A B C / - D E * + F - 程式實際載跑的話是
A ---->存入堆疊
B ---->存入堆疊
C ---->存入堆疊
/ ----->遇到運算子了 從前面取出兩個 (Stack.pop() 兩次) 即 B C
再將 B / C 的結果 ---->存入堆疊
繼續....
- ----->遇到運算子 從前面取出兩個 即 A 還有 B/C的結果
再將 A-(B/C) 存入堆疊
.
.
.
一直計算到最後
所以是相當容易的,不需要擔心括號或是四則運算的規則
雲淡風清 發表在 痞客邦 留言(0) 人氣(13,553)