阿摩線上測驗 登入

申論題資訊

試卷:111年 - 111 地方政府特種考試_四等_統計、資訊處理:資料處理概要#112599
科目:資料處理
年份:111年
排序:0

題組內容

二、設PFExp為一字串,描述著一個以後置運算式(postfixexpression)表示之數學運算式,例如PFExp=“62/3-42*+”。當中每一個運算元 (operand)皆僅為一個位數整數,且只有‘+’、‘-’、‘*’、‘/’四 種可能運算子(operator)。

申論題內容

(一)寫出一演算法(int)postfix_math(string PFExp),利用堆疊(Stack)計算該後置運算式,並傳回該運算結果。(15 分)

詳解 (共 1 筆)

詳解 提供者:hchungw
要使用堆疊(Stack)來計算一個後置運算式(postfix expression),我們可以設計一個算法 postfix_math(string PFExp),該算法將依次處理運算元和運算子,並使用堆疊來存儲中間結果。以下是算法的具體實現:

python
    
        
def postfix_math(PFExp):
    # 創建一個空堆疊
    stack = []
    
    # 遍歷後置運算式中的每個字符
    for char in PFExp:
        if char.isdigit():  # 如果字符是運算元(數字),則壓入堆疊
            stack.append(int(char))
        else:  # 否則,字符是運算子
            # 從堆疊中彈出兩個運算元
            b = stack.pop()
            a = stack.pop()
            
            # 根據運算子進行相應的運算
            if char == '+':
                result = a + b
            elif char == '-':
                result = a - b
            elif char == '*':
                result = a * b
            elif char == '/':
                result = a // b  # 這裡使用整數除法
            
            # 將運算結果壓入堆疊
            stack.append(result)
    
    # 最後堆疊中應該只剩下一個元素,即運算結果
    return stack[0]
# 範例使用
PFExp = "62/3-42*+"
result = postfix_math(PFExp)
print("運算結果:", result)
演算法說明
初始化堆疊:
創建一個空的堆疊 stack 來存儲運算元和中間結果。
遍歷運算式:
遍歷後置運算式 PFExp 中的每個字符 char。
如果 char 是數字(運算元),則將其轉換為整數並壓入堆疊。
如果 char 是運算子,則從堆疊中彈出兩個運算元 a 和 b(注意:先彈出的是 b,後彈出的是 a),根據運算子進行相應的運算,然後將運算結果壓入堆疊。

最終,堆疊中應該只剩下一個元素,即最終的運算結果。返回該結果。