要使用堆疊(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),根據運算子進行相應的運算,然後將運算結果壓入堆疊。
最終,堆疊中應該只剩下一個元素,即最終的運算結果。返回該結果。