中綴表示式轉字尾表示式 求表示式的值

2021-07-22 15:53:00 字數 1019 閱讀 9959

中綴轉字尾需要遵守以下規則

1、運算元:直接輸出

2、「(」:直接入棧

3、「)」:」將「(」以前的直接輸出,並將「)」出棧(不輸出)

4、運算子+-*/:將優先順序不小於該運算子的操作符出棧,最後將該運算子入棧

5、最後將棧中的元素依次彈出

6、優先順序*/大於+-大於()

class intosuf

if(op[i].equals("("))

if (op[i].equals(")"))

continue;

}while(!stack.isempty())

else

break;

}stack.push(op[i]);

}while(!stack.isempty())

h.add(stack.pop());

return h;

}private

int judge(string a,string b)//比較操作符a、b的大小,若a>=b則返回1,否則返回-1

return -1;

}private boolean isopfu(string a)//判斷a是否是操作符

}

求字尾表示式的值

1、運算元:入棧

2、操作符:將棧頂的兩個元素彈出,先彈出的在運算子右邊,後彈出的在左邊,計算結果,並將結果入棧

3、最後剩餘的元素就為表示式的值

class calculate

else

stack

.push(temp);

}return double.valueof(stack

.pop());

}private boolean isopfu(string a)//判斷a是否是操作符

private double count(string l,string r,string op)//根據運算子計算兩個數的結果

}}

中綴表示式轉字尾表示式 求字尾表示式值

中綴表示式轉字尾表示式 佇列q和棧s q存放字尾表示式結果 s存放操作符 設棧頂元素top 當前讀取元素a 演算法如果s是空棧 a入棧非空棧 a不是操作符,a插入佇列q 如果a為 a入棧 否則,如果a為 把棧內操作符出棧依次插入佇列q,直至遇到得 元素出棧為止 否則,如果a優先順序大於top,a入棧...

中綴表示式轉字尾表示式

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棧可先放入優先順序最低的運算子 注意,中綴式應以此最低優先順序的運算子結束。可指定其他字元,不一定非 不可。從中綴式的左端開始取字元,逐...