前序表示式 中序表示式 後序表示式

2022-08-09 09:06:14 字數 1081 閱讀 3775

執行完成後,先輸出佇列內容,在輸出棧內容,最終結果即是後序表示式

/**

* 先序表示式 -> 後序表示式

*/public string infixtopostfix(string elements)

if (s.equals(")"))

continue;

}//碰到"+"或 "-"運算子

if (s.equals("+") || s.equals("-"))

while (!stack.isempty() && !stack.peek().equals("("))

stack.push(s);

continue;

}//碰到"*"或 "/"運算子

if (s.equals("*") || s.equals("/"))

boolean peek = stack.peek().equals("*") || stack.peek().equals("/");

while (!stack.isempty() && peek)

stack.push(s);

continue;

}queue.enqueue(s);

}//拼接後序表示式

do while (!queue.isempty());

do while (!stack.isempty());

return res;

}

/**

* 1.3.11 計算後序表示式的值

*/public class evaluatepostfix

stacktmp = new stack<>();

string res = "";

while (!stack.isempty())

continue;

}tmp.push(pop);

res = pop;

}return integer.parseint(res);

}public int evaluate(int a, int b, string operator)

}}

「中序表示式」轉換為「前序表示式」 「後序表示式」

首先看下面所示 中序表示式 2 3 2 1 3 4 1 前序表示式 23 21 3 41 後序表示式 23 21 341 中序表示式對我們而言是很直觀的 我們平時接觸的就是這個 但計算機處理起來比較麻煩 括號 優先順序之類的 前序和後序表示式中沒有括號,而且在計算中只需單向掃瞄,不需要考慮運算子的優...

中序表示式轉後序表示式

演算法的思想是這樣的 演算法分為兩個棧,乙個opstack為操作符棧,另一numstack為運算元棧,隨著程式執行運算元棧中里也會有操作符,這是因為小運算元和操作符化作了更大的運算元。如果需要求值,就會將運算元計算出結果,而由於此演算法只是求表示式,所以就保留了操作符。每一次彈出棧時都會涉及到操作符...

中序表示式轉為後序表示式(c語言)

按照中序表示式與後序表示式的規則借助堆疊進行表示即可 後附詳細鏈結二叉運算樹 中序表示式就是我們在數學中見到的中規中矩的表示式,例如3 2 2 3 7 後序表示式滿足運算符號置於數字的後面 在轉化的過程中滿足的規則 講解 include include include define maxsize ...