資料結構《中綴表示式轉字尾表示式的實現》

2021-09-09 01:30:00 字數 1362 閱讀 6246

主要功能:利用棧將中綴表示式轉換成字尾表示式、並對字尾表示式求值。

#include#include #include using namespace std;

#define maxsize 50

typedef char elemtype;

typedef struct

sqstack;

typedef struct

sqstack1;

void initstack(sqstack *&s)

//初始化棧1

void initstack1(sqstack1 *&s)

//初始化棧2

void destorystack(sqstack *&s)

//銷毀棧1

void destorystack1(sqstack1 *&s)

//銷毀棧2

bool stackempty(sqstack *s)

//判斷棧是否為空

bool push(sqstack *&s, elemtype e)

//進棧1

bool push1(sqstack1 *&s,double e)

//進棧2

bool pop(sqstack *&s, elemtype &e)

//出棧1

bool pop1(sqstack1 * & s, double &e)

//出棧2

bool gettop(sqstack *s, elemtype &e)

//取棧1頂

bool gettop1(sqstack1 *s, double &e)

//取棧2頂

//判斷括號是否配對

bool match(char exp,int n)

postexp[i++]='#';//用#標記數字結束

} }

while(!stackempty(optr))//exp掃瞄結束,棧不為空時迴圈

postexp[i]='\0';//給postexp表示式新增結束標誌

destorystack(optr);//銷毀棧

}//計算字尾表示式的值

//計算字尾表示式的值

double compvalue(char *postexp)

push1(opnd,d);//計算結果d進棧

break;

} postexp++;//繼續處理其他字元

} gettop1(opnd,e);//取棧頂元素e

destorystack1(opnd);

return e;

} int main()

}//(56-20)/(4+2)

資料結構 中綴表示式轉字尾表示式

話不多說上例子 1 2 3 4 5 1 2 3 4 5 中綴表示式轉字尾表示式思路分析 1.首先需要兩個棧運算子棧 s1和儲存中間結果的棧 s2 2.從左至右掃瞄中綴表示式 2.1當前為運算元,將其壓棧至s2 2.2當前為運算子 2.2.1如果s1為空或者棧頂運算子為左括號 則將此運算子直接入s1棧...

資料結構之中綴表示式轉字尾表示式

中綴表示式轉字尾表示式的基本規則 1.遇到運算元就直接輸出 2.遇到左括號就壓入棧中 3.遇到右括號就將棧中所有符號輸出且彈出 左括號只需要彈出不需要輸出 4.遇到操作符就與棧頂元素進行對比 當前操作符比棧頂操作符的優先順序大的話 就直接將當前操作符壓入棧中 當前操作符比棧頂操作符的優先順序小或者相...

資料結構之中綴表示式轉字尾表示式

對於計算機來說,字尾表示式更方便計算,但是對於我們來說,中綴表示式更方便理解。為了大家都方便,下面就聊聊如何把乙個中綴表示式借助 轉化成乙個字尾表示式。在實現轉字尾表示式時,用棧結構儲存操作符,由於中間結構不用出棧,並且如果用棧結構儲存,那麼將出棧結果逆序才是我們要的字尾表示式,所以用list儲存即...