第6周 專案5 字尾表示式

2021-07-05 15:38:05 字數 2251 閱讀 1282

問題描述及**:

/*   

*煙台大學計控學院

*作 者:楊徵

*完成日期:2023年10月5日

*問題描述:利用sqstack.h中棧的基本運算,實現將乙個中綴表示式轉換為對應的字尾表示式的演算法。例如,輸入(56-20)/(4+2),輸出字尾表示式::56#20#-4#2#+/要求在數字後加#。

*/

(1)sqstack.h

#ifndef sqstack_h_included

#define sqstack_h_included

#define maxsize 100

typedef char elemtype;

typedef struct

sqstack; //順序棧型別定義

struct //設定運算子優先順序

lpri= ,,,,,,},

rpri= ,,,,,,};

void initstack(sqstack *&s); //初始化棧

void destroystack(sqstack *&s); //銷毀棧

bool stackempty(sqstack *s); //棧是否為空

int stacklength(sqstack *s); //返回棧中元素個數——棧長度

bool push(sqstack *&s,elemtype e); //入棧

bool pop(sqstack *&s,elemtype &e); //出棧

bool gettop(sqstack *s,elemtype &e); //取棧頂資料元素

void dispstack(sqstack *s); //輸出棧

int leftpri(char op);

int rightpri(char op); //求右運算子op的優先順序

bool inop(char ch); //判斷ch是否為運算子

int precede(char op1,char op2); //op1和op2運算子優先順序的比較結果

void trans(char *exp,char postexp);

//將算術表示式exp轉換成字尾表示式postexp

#endif // sqstack_h_included

(2)sqstack.cpp

#include #include #include "sqstack.h"

#define maxop 7

#include"sqstack.h"

#include#includevoid initstack(sqstack *&s)

void destroystack(sqstack *&s)

int stacklength(sqstack *s) //返回棧中元素個數——棧長度

bool stackempty(sqstack *s)

bool push(sqstack *&s,elemtype e)

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

bool gettop(sqstack *s,elemtype &e)

void dispstack(sqstack *s) //輸出棧

int leftpri(char op) //求左運算子op的優先順序

postexp[i++]='#'; //用#標識乙個數值串結束

}else //為運算子的情況

}} //while (*exp!='\0')

pop(opstack, ch);

while (ch!='=')

//此時exp掃瞄完畢,退棧到'='為止

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

destroystack(opstack);

}

(3)main.cpp

#include"sqstack.h"

#includeint main()

執行結果:

知識點總結:

順序棧的基本運算;將中綴表示式轉換為字尾表示式

學習心得:

意思很容易理解,感覺演算法好麻煩

第6周專案5 字尾表示式

問題 檔名稱 專案5.cbp 作 者 王聰 完成日期 2015年10月10日 版 本 號 v1.0 問題描述 利用sqstack.h中棧的基本運算,實現將乙個中綴表示式轉換為對應的字尾表達 式的演算法。例如,輸入 56 20 4 2 輸出字尾表示式 56 20 4 2 要求 在數字後加 輸入描述 字...

第6周 專案5 字尾表示式

檔名稱 1.pp 完成日期 2015年10月12日 問題描述 實現將乙個中綴表示式轉換為對應的字尾表示式演算法 include include define maxsize 100 typedef char elemtype typedef struct sqstack 順序棧型別定義 void i...

第6周 專案5 字尾表示式

問題及 檔名稱 test.cpp 作 者 焦夢真 完成日期 2015年10月12日 版 本 號 v1.0 問題描述 利用sqstack.h中棧的基本運算,實現將乙個中綴表示式轉換為對應的字尾表示式的演算法。輸入描述 程式輸出 include include include sqstack.h def...