字首表示式求值(逆序讀取資料,利用棧的性質求值)

2021-10-10 09:42:54 字數 996 閱讀 2723

#include

#include

#include

#include

#include

#define maxsize 30

using

namespace std;

typedef

double elemtype;

typedef

struct

//定義乙個棧

stack;

void initstack (stack *s)

//建立空棧

void instack (stack *s,elemtype e)

//入棧

*(s-

>top)

= e;

s->top++;}

void popstack (stack *s,elemtype *e)

//出棧,把棧頂值彈出,儲存在e的位址

intmain()

cout<<

"字首表示式為:"

;for

(i=0

;i<=j-

1;i++

) cout<<

"字首表示式的值為:"

}double

sumstack

(char str[

100]

)//形參char陣列作用是將該函式中輸入的資料傳遞給實參

strcpy

(str,c)

; i=i-1;

for(i=i;i >=

0;i--

)//逆序讀入字元陣列的值

if(c1<

48|| c1>57)

//如果是運算子,則從棧中彈出兩個數運算,並把結果入棧 }}

popstack

(&s,

&pop)

;//彈出最終結果

return pop;

}

字首表示式求值

思路 這裡實際是把字首表示式逆序輸出轉化為類似後序表示式求值 比如 輸入 2 3 7 4 8 4 處理成 4 8 4 7 3 2 鍊錶,放到字尾表示式求值程式 postfixeval計算得13.0 include include include include define maxsize 100 ...

字首表示式求值

include using namespace std stackst double yunsuan double a,double b,string c else if c else if c else int main for int j i 1 j 0 j if st.empty if f1 ...

字首表示式求值

對於乙個字首表示式的求值而言,首先要從右至左掃瞄表示式,從右邊第乙個字元開始判斷,如果當前字元是數字則一直到數字串的末尾再記錄下來,如果是運算子,則將右邊離得最近的兩個 數字串 作相應的運算,以此作為乙個新的 數字串 並記錄下來。一直掃瞄到表示式的最左端時,最後運算的值也就是表示式的值。例如,字首表...