中綴表示式轉字尾表示式並計算字尾表示式的值

2021-05-23 03:16:49 字數 850 閱讀 7473

中綴表示式轉字尾表示式思路:

首先給用到的每個操作符如'+', '-', '*', '/'等按照他們原本的計算優先順序定義兩個代表優先順序的數值, 如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...