鏈棧(表示式求值)

2021-08-28 18:59:32 字數 1096 閱讀 7220

#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 若當前運算子優先順序等於棧頂優先順序 括號的情況 則...