#include#include#includetypedef struct snode snode, *linkstack;
int initstack(linkstack &s)
bool push(linkstack &s, char e) //在棧頂插入元素e
bool pop(linkstack &s, char &e) //刪除s的棧頂元素,用e儲存其值
int gettop(linkstack s) //返回s的棧頂元素,不修改棧頂指標
typedef struct isnode isnode, *ilinkstack;
int initstack(ilinkstack &s)
bool push(ilinkstack &s, double e) //在棧頂插入元素e
bool pop(ilinkstack &s, double &e) //刪除s的棧頂元素,用e儲存其值
double gettop(ilinkstack s) //返回s的棧頂元素,不修改棧頂指標
int in(char ch)
char precede(char t1,char t2)
break;
case '-':
switch(t2)
break;
case '*':
switch(t2)
break;
case '/':
switch(t2)
break;
case '(':
switch(t2)
break;
case ')':
switch(t2)
break;
case '#':
switch (t2)
break;
}}double operate(double a,char theta,double b)
}double evaluateexpression()
else
}//不是運算子則進棧
else
} }return gettop(opnd);
}int main()
鏈棧實現表示式求值
標頭檔案 鏈棧實現表示式求值 include using namespace std const char oper 7 define ok 1 define error 0 define overflow 2 typedef char selemtype typedef int status ty...
表示式求值(棧)
時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 acm隊的mdd想做乙個計算器,但是,他要做的不僅僅是一計算乙個a b的計算器,他想實現隨便輸入乙個表示式都能求出它的值的計算器,現在請你幫助他來實現這個計算器吧。比如輸入 1 2 4 程式就輸出1.50 結果保留兩位小數 輸入...
棧 表示式求值
核心演算法思想 1.運用兩個棧,乙個存運算子,乙個存數值 2.以 做為標誌位,開頭或者結尾 3.檢查當前字元,若當前字元為數值,則加入數值棧,若為運算子,則檢驗當前運算子的優先順序,1 若當前運算子優先順序大於棧頂優先順序,則把該運算子壓入棧 2 若當前運算子優先順序等於棧頂優先順序 括號的情況 則...