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

2021-06-08 15:46:29 字數 813 閱讀 1684

1.開始在棧中壓入乙個#。然後從中綴表示式的左邊開始遍歷,如果遇到數字直接放入佇列。如果是操作符則和棧頂比較,

如果優先順序大於棧頂則入棧,否則將棧頂壓入佇列並將當前操作符入棧。

2.如果遇到'('。則無條件入棧不用和棧頂進行比較。

3.如果遇到')'。不用入棧,從棧頂開始將棧內元素彈出並壓入佇列中,直到遇到'('。將'('彈出棧。

字尾表示式運算規則:需要設立乙個棧用於存放計算結果。

1.從佇列中取元素,如果是運算元直接出隊入棧。

2.如果是運算子則出隊,並且彈出棧的兩個元素運算並將運算結果壓入棧內。直到隊列為空。

#include #include #include using namespace std;

stacks;

queueq;

int operator(char ch)

}int priority(char ch)

}double caculate(double a,char ch,double b)

}void change(char *ch)

else

else if (ch[i] == ')')

s.pop();

i++;

}else

else}}

}/*將剩餘的棧內的元素彈出棧存在佇列中*/

while (s.top() != '#')

}double result()

else

}cout << s.top() << endl;

}int main()

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

字尾表示式也叫逆波蘭表示式,其求值過程可以用到棧來輔助儲存。假定待求值的字尾表示式為 6 5 2 3 8 3 則其求值過程如下 1 遍歷表示式,遇到的數字首先放入棧中,此時棧如下所示 2 接著讀到 則彈出3和2,執行3 2,計算結果等於5,並將5壓入到棧中。3 讀到8,將其直接放入棧中。4 讀到 彈...

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

資料結構之棧的應用 先實現求值這一步吧,已知字尾表示式 轉換這一環節待更新 上 中綴表示式轉字尾表示式 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...