java實現中綴表示式轉字尾表示式

2021-09-11 17:54:12 字數 648 閱讀 1601

public class stacktest 

/*** 等級很重要

* 優先順序最高的是"(",因為一定會進棧

* 次之為"/*"

* 再為"+-"

* 優先順序最低的是")",一定會連帶其他的運算子出棧

* 數字不進棧

* @param c

* @return

*/public static int level(char c)else if("*/".indexof(c) > -1)else if("+-".indexof(c) > -1)else if(")".indexof(c) > -1) else

}public static string convert(string ss)else else else else

}else

//如果棧頂是"(",直接出棧

if(level(stack.peek()) == 3)

}else

stack.push(c);}}

}}}}

//2+4 迴圈結束後,棧內還有運算子,出棧到返回值中

while (!stack.isempty())

return sb.tostring();

}}

中綴轉字尾表示式

中綴轉字尾 進棧元素 進棧規則 若棧頂元素比目前元素的優先順序大或者相等,出棧 若棧頂元素與當前元素優先順序小,入棧 若當前元素為 入棧 若當前元素為 出棧頂元素直到遇到 位置,並且 不表達 遇到運算元直接表達 include include include define n 10 void fun...

中綴表示式轉字尾表示式

using system using system.collections.generic using system.text namespace 中綴表示式轉字尾表示式 class convert public void run top break case case while top 1 st...

中綴表示式轉字尾表示式

將乙個普通的中綴表示式轉換為字尾表示式的一般演算法是 首先需要分配2個棧,乙個作為臨時儲存運算子的棧s1 含乙個結束符號 乙個作為輸入字尾表示式的棧s2 空棧 s1棧可先放入優先順序最低的運算子 注意,中綴式應以此最低優先順序的運算子結束。可指定其他字元,不一定非 不可。從中綴式的左端開始取字元,逐...