計算表示式值(字尾表示式) 棧

2021-10-24 21:30:10 字數 1027 閱讀 6888

處理表示式主要是對優先順序以及括號的判斷

1.運算子棧頂的優先順序小於加入的時,需要將所有的不評級的取出並計算,

2.當遇到)時,需要括號內的運算全部處理

2.其他情況全部加入運算子棧和資料棧

**:

#include

#include

#include

using

namespace std;

typedef

long

long

int ll;

const

int maxn =10;

stack<

char

> ss;

//運算子棧

stack<

double

>st;

//資料棧

char s[30]

;int

main()

else}}

else

if(s[i]

=='+'

|| s[i]

=='-'

)else

} ss.

push

(s[i]);

}else

if(s[i]

=='/'

|| s[i]

=='*'

||s[i]

=='('

)else

i--; st.

push

(sum);}

}/*printf_s("%d %d\n", ss.size(), st.size());

while (ss.size())

*/while

(!ss.

empty()

)}double su;

su = st.

top();

printf_s

("%.2lf"

, su)

;//(56-20)/(1+5)

}

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

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

字尾表示式 棧

若干行,每行對應乙個中綴表示式 若干行,每行對應乙個由中綴表示式轉換而來的字尾表示式 x a y b z f a b c d m n s t y a b c d e f gxayb zf abc dm n st y abc def g 解題思路 首先如何實現中綴表示式轉換成字尾表示式,方法如下 1....

棧 字尾表示式

看了老師給的部落格,學習了一下,我學的確實很菜啊,仿照寫了乙個可以實現任意數字個數的加括號運算,目前只支援加乙個括號。收穫真的挺大 def to rpn f4 defcompare x,y v return 1 if y else v x v y rpn,operators for i in f4 ...