用陣列順序棧實現表示式運算 中綴表示式

2021-06-10 08:55:14 字數 654 閱讀 2477

//只有關鍵的運算部分有**,只要例項化,棧是根據教科書上的寫的,如果要用stl可以修改下就可以用,這個是中序表示式的運算,由於按照老師要求,可能寫的有點繁瑣.#include#include"seqstack.h"

//教科書上的順序陣列棧,改為相應的stl棧函式就可以直接例項化呼叫

class calculator

void run();

void clear();

private:

seqstackns;

seqstackcs;

void addoperand(double value);

void dooperator(char op);

int icp(char);

int isp(char);

};

#include"calcuator.h"

void calculator::dooperator(char op)

} while(!cs.isempty())

else

cin.putback(ch);

} }ns.pop(newoperand);

cout<<"結果是:"<

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

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

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

思路 1.從左到右獲取中綴表示式 2.的優先順序最高,遇到直接入棧,直到遇到比他優先順序低的,依次出棧 3.遇到直接入棧,等遇到右括號 後,將 棧的運算子出棧輸出,出棧不輸出 4.如果棧空,直接入棧,否則將棧中優先順序不低於它們的運算子依次彈出,直到棧空或遇到 為止 如下所示 中綴轉字尾 void ...

c語言用棧實現計算中綴表示式

解決這個問題需要兩步 將中綴式換成字尾式 字尾式更利於寫演算法 計算字尾式。因為還要滿足多位數和小數,所以用了字串。typedef struct x typedef struct sqstack 關於棧的一些函式就不寫了,應該都知道。下面直接給中綴式換字尾式 有注釋 void change sqst...