所以我正在評估Postfix
表達式使用堆棧。表達式10 6 -
的讀數爲10 - 6
中綴,應該等於4
。但它不,它等於-4
。更糟的是,即使我嘗試反轉代碼,它仍然等於-4
。我不確定這是否是我的堆棧或函數調用錯誤,或者C++的一些怪癖。但是,如果我將一個彈出的值從堆棧中存儲到一個變量中,然後執行該等式,則可以正常工作。Postfix負面是不正確和通信
相關代碼: Stack類
template <class Item>
class stack {
private:
struct node {
Item item;
node* next;
node(Item x, node* t) {
item = x;
next = t;
}
};
typedef node* link;
link head;
public:
stack(int) { head = 0; }
int empty() const { return head == 0; }
void push(Item x) { head = new node(x, head); }
Item pop() {
Item v = head->item;
link t = head->next;
delete head;
head = t;
return v;
}
};
Evalutating the negative operation
else if (argv[i][0] == '-') {
stck.push(((-1) * stck.pop()) + stck.pop()); // A-B = -B+A
// stck.push(stck.pop()+((-1)*stck.pop())); //A-B = -B+A
} // Both equations equal the same thing (Note I dont use both at the same
// time)
這工作
int n = (stck.pop());
stck.push(-1*n+stck.pop()); //A-B = -B+A
'pop' return和'Item',Item的'operator *'的實現是什麼,至少是?它更好[MCVE](http://stackoverflow.com/help/mcve) – NetVipeC 2014-09-24 16:18:51