用自定義的棧實現算術表示式(字尾表示式)求值

2021-10-11 18:18:12 字數 1764 閱讀 2041

#include

#include

using

namespace std;

#define max 88

//luosansui's sequential stack

//構建乙個棧的資料型別

struct stack

;//定義運算元優先順序

void

priority

(char singlesym,

int& p)

}//判斷運算元優先順序,並合成乙個棧

void

judgepriority

(stack& fig, stack& sym,

char singlesym,

int e,

int s)

else

if(e ==3)

sym.top--;}

else

if(e > s)

else

if(e <= s)

//壓入

sym.m_sq[

++sym.top]

= singlesym;}}

//最後彈出所有的

void

lastjudgepriority

(stack& fig, stack& sym)

}//判斷是否為操作符

bool

issymbol

(char issym)

}//轉換為字尾表示式

stack&

conversion

(string& exp, stack& sym, stack& fig)

}else

}lastjudgepriority

(fig, sym)

;delete

sym.m_sq;

//顯示字尾表示式

cout <<

"字尾表示式為:"

;for

(int i =

0; i <

20; i++

) cout << endl;

//返回結果

return fig;

}//計算

double

cal(string a, string b,

char c)

return y;

}//提取應運算的運算數與操作符

void

calculate

(stack& sta)

} sta.m_sq[i]

=to_string

(cal

(a, b, sta.m_sq[i][0

]));

}}double lss =

atof

(sta.m_sq[sta.top]

.c_str()

);cout << lss << endl;

delete

sta.m_sq;

}//過濾使用者輸入的表示式中的空格

void

filter

(string& exp)}}

for(

int i =

(int

)exp.

length()

; i >-1

; i--)}

exp = exp.

substr(0

,exp.

length()

- num);}

intmain()

用棧實現自定義算術運算

用棧實現自定義算術運算 對應運算 且有規則 2 3 4 2 3 4 實現要點 1 定義數字棧和符號棧 2 壓棧操作是棧頂指標先加1,再賦值,出棧操作時先賦值,棧頂指標再減1 3 用switch語句實現算術運算和優先規則定義要簡單些 4 主函式中,對每個數字進行數字棧入棧操作,根據運算子的優先順序,對...

基於棧的字尾算術表示式求值

這是乙個菜雞的19秋季學期資料結構實驗課 基於棧的字尾算術表示式求值 實驗目的 1.掌握中綴表示式轉換為字尾表示式的演算法。2.掌握字尾表示式求值的演算法。實驗內容 問題描述 輸入乙個中綴算術表示式,將其轉換為字尾表示式,然後對字尾表示式進行求值。運算子包括 參與運算的為小於10的自然數 只考慮二元...

C用棧實現中綴表示式轉字尾表示式

include include include define maxsize 100 設順序表的最大長度為100,可依具體情況分配空間 typedef char datatype typedef struct datatype data maxsize int top 棧頂指標 seqstack 順...