給出的表達式:這是Shunting Yard的錯還是我自己的錯?
1/2/3/4*5
它到達表達式的結尾,並嘗試乘出圖4和5第一因爲它開始彈出堆棧這是錯誤的。我不一定在做RPN,而只是當場評估。我怎樣才能防止這一點?
// Expression was completely read - so we should try and make sense of
// this now
while (operatorStack.size() != 0) {
ApplyOperation(operatorStack, operandStack);
}
在這一點上,我開始關閉操作員和操作。由於乘法和除法具有相同的存在,所以它們以乘法開始。
的跟蹤:
1/2/3/4*5
Applying * to 5 and 4
Result: 20
Applying/to 20 and 3
Result: 3/20
Applying/to 3/20 and 2
Result: 40/3
Applying/to 40/3 and 1
Result: 3/40
我們應該怎麼知道?你沒有發佈任何代碼。 – 2013-11-04 22:07:05
一個基本愚蠢的問題。分流碼算法自1961年以來一直運行。 – EJP
@MikeW對不起,這是一個普遍的問題。允許我添加一些上下文... –