資料結構與演算法

以逆波蘭表示法(後序式)寫成的算式「3 4 + 2 * 5 −」,用「遇到數字就推入堆疊,遇到運算子就取出2個值計算並推入結果」的方法求值。結果為多少?其中運算子左側的值是先推入的那一個。

  1. A−9
  2. B6
  3. C9
查看答案與解析

正確答案:C. 9

推入3、4,以 + 取出並推入 3 + 4 = 7。接著推入2,以 * 推入 7 × 2 = 14。推入5,以 − 從先推入的14減去後推入的5,得到 14 − 5 = 9。後序式的運算順序由排列決定,因此不需要括號,相當於一般算式的 (3 + 4) × 2 − 5。−9 是弄反減法左右的值,6 則是不加括號讀成 3 + 4 × 2 − 5 的值。

  • A. 這是把減法的左右弄反成 5 − 14 的值。左側是先推入的14。
  • B. 這是當作沒有括號的 3 + 4 × 2 − 5 計算的值。在後序式中 + 會先計算。
  • C. 正確。(3 + 4) × 2 − 5 = 9。
練習這個領域 前往領域頁面

相關計算工具

資料結構與演算法的其他題目

  1. 關於雜湊表中碰撞(collision)的說明,下列何者正確?
  2. 在大小為7(位置0~6)的雜湊表中,以雜湊函數 h(k) = k mod 7 依序存放鍵10、17、24、3。發生碰撞時,使用把位置逐一往後移(6的下一個是0)來尋找空位置的線性探測法。鍵3會存放在哪個位置?
  3. 比較處理雜湊表碰撞的鏈結法(以鏈結串列串接相同位置的元素)與開放定址法(在表中尋找其他空位置),下列說明何者正確?負載因子為存放的元素數除以表的大小所得的值。
  4. 與陣列中央的元素比較、每次將搜尋範圍縮小一半的二分搜尋,其使用的前提條件為下列何者?
  5. 以二分搜尋在依升冪排序的1,000個不同值中尋找某個值。若1次比較就能得知「相等、較小、較大」,包含找得到與找不到的情況,比較次數最多為幾次?