#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 順...