我想知道是否有人可以幫助這個堆棧問題 有2個主要功能的例子,答案應該是1024和4096,但我會得到100和144 問題必須在evaluate_postfix定義監守我知道Stack類工作堆棧和評估後綴
class Stack:
def __init__(self):
self.items = []
def is_empty(self):
return self.items == []
def push(self, item):
self.items.append(item)
def pop(self):
return self.items.pop()
def peek(self):
return self.items[len(self.items)-1]
def size(self):
return len(self.items)
def evaluate_postfix(text):
s = Stack()
for element in text:
plus = None
if element.isdigit():
s.push(int(element))
elif element == '^':
plus = s.pop() ** s.pop()
elif element == "+":
plus = s.pop() + s.pop()
elif element == "-":
plus = s.pop() - s.pop()
elif element == "*":
plus = s.pop() * s.pop()
elif element == "/":
plus = s.pop()/s.pop()
if plus is not None:
s.push(plus)
return s.pop()
def main():
print(evaluate_postfix(['2', '10', '^']))
print(evaluate_postfix(['2', '4', '3', '*', '^']))
main()
你爲什麼認爲這些答案是正確的?在你的第一個例子中,你推2,推10,然後你得到'^'的第三個元素。如果這應該是「提高最近添加的元素的最新添加元素」,那麼答案是10^2 = 100。如果它的意思是「將最近添加的元素的第二個元素添加到最近添加的元素的權力」中,即2^10 = 1024。任何不可交換的二元運算符都會出現同樣的問題。你的程序沒有錯,但也許你對問題的解釋是。 –