中綴表示式轉字尾表示式思路:
首先給用到的每個操作符如'+', '-', '*', '/'等按照他們原本的計算優先順序定義兩個代表優先順序的數值, 如instackpri代表入棧之後的優先順序, outstackpri代表入棧之前的優先順序...
然後掃瞄表示式, 如果是數字, 直接輸出, 如果是')', 則將棧頂操作符依次出棧, 直到遇到'('...如果是其他操作符, 則用這個操作符的outstackpri值和棧頂的操作符的instackpri進行比較, 如果小於, 則將棧頂的操作符出棧並輸出, 之後再次將outstackpri和棧頂操作符的instackpri比較,如果仍小於, 繼續出棧, 直到outstackpri大於棧頂操作符的instackpri, 然後將當前這個操作符入棧...當掃瞄完表示式時, 如果棧中還有操作符, 則依次出棧輸出...最後輸出的就是字尾表示式...
字尾表示式計算思路:
一次掃瞄字尾表示式, 如果是數字, 則壓棧, 如果是操作符, 則依次取出棧頂的兩個運算元進行計算, 並將計算結果壓棧, 當掃瞄完表示式時, 棧中的元素就是表示式的計算結果...
具體的實現如下(這個實現沒有考慮對錯誤的處理, 假定輸入的表示式是正確的, 且操作符都是二元操作符)
測試輸入:
1+2*(3-4)-9/3
3*2+(9-0)^2
1+9+5
輸出:sufix expression is: 1234-*+93/-
result is: -4
sufix expression is: 32*90-2^+
result is: 87
sufix expression is: 19+5+
result is: 15
參考:《資料結構》殷人昆
c 中綴表示式轉字尾表示式並計算
include include using namespace std 棧內優先順序 int isp char a 棧外優先順序 int icp char a 計算函式 int cal int a,int b,char c char in order expression 1000 中綴表示式 ch...
中綴表示式轉字尾表示式,並求值
資料結構之棧的應用 先實現求值這一步吧,已知字尾表示式 轉換這一環節待更新 上 中綴表示式轉字尾表示式 seqstack 以及求值 version 1.0 求值,需要自己輸入字尾表示式 2.0 加上轉化功能 演算法 建立乙個運算元棧,自左向右遍歷字尾表示式,遇到乙個運算元就入棧,遇到乙個操作符就從棧...
中綴表示式轉字尾表示式
using system using system.collections.generic using system.text namespace 中綴表示式轉字尾表示式 class convert public void run top break case case while top 1 st...