我想從中綴轉換爲後綴(我還有更多要做),但我甚至無法繼續工作,因爲我得到一個錯誤。任何人都可以幫我找出爲什麼我的後綴轉換不起作用嗎?
這裏就是錯誤在於:
//infix input is "1 + 2 * 3 - 4"
//tokens = {"1", "+", "2", "*", "3", "-", "4")
for(int i = 0; i < tokens.size(); i++)
{
if(isOperand(tokens[i]))
tempPostfix += tokens[i];
else if(isOperator(tokens[i]))
{
if(st.empty())
st.push(tokens[i]);
else if(getWeight(tokens[i]) > getWeight(st.top()))
st.push(tokens[i]);
else
{
while(getWeight(tokens[i]) <= getWeight(st.top()) && !st.empty())
{
tempPostfix += st.top();
st.pop(); //If there is only one item in the stack, it crashes
}
st.push(tokens[i]);
}
}
}
while(!st.empty())
{
tempPostfix += st.top();
st.pop();
}
string postfix = tempPostfix;
return postfix;
這裏是我的,我在那裏
bool isOperator(string s)
{
bool r = false;
if(s == "+" || s == "-" || s == "*" || s == "/")
r = true;
return r;
}
bool isOperand(string s)
{
bool r = false;
if(!isOperator(s) && s != "(" && s != ")")
r = true;
return r;
}
int getWeight(string op)
{
int weight = 0;
if(op == "+" || op == "-")
weight = 1;
if(op == "*" || op == "/")
weight = 2;
return weight;
}
叫我可以計算出其餘一旦我弄清楚爲什麼我收到的其他功能錯誤在那裏。提前致謝。
回覆:問題標籤:** 1。**請添加適當的編程語言標籤,例如: 'C++'。 ** 2。**你確定'postfix'標籤是正確的嗎? (來自標記的wiki:_「Postfix是一個免費的,開源的,廣泛使用的跨平臺郵件服務器,可在所有常見平臺上使用。」)__ – stakx 2014-12-07 20:23:56