表示式求解程式

2021-04-13 13:25:55 字數 1904 閱讀 3214

//均已除錯通過,編譯器為dev c++ 

#include

#include

#include

#include

#define  stack_size 100

char operator[7]=;      //用6出錯!!!!

int result,ch2;

char opr;   //定義全域性變數

//*************優先關係**************************

char prioritytable[7][7]=,,,

,,,,

};//***************運算子結構體*****************

typedef struct sqstack1,*pstack1;

//**************運算元結構*******************      

typedef struct sqstack2,*pstack2;

//***************建立堆疊**********************              

void  initstack1(pstack1 s)

void initstack2(pstack2 s)

//******************入棧******************************    

int pushstack1(pstack1 s,char ch)

void   pushstack2(pstack2 s,int ch)

//******************出棧*********************       

void   popstack1(pstack1 s,char *ch)

void popstack2(pstack2 s,int *ch)

//**********取棧頂元素*****************

int gettop1(pstack1 s)

int gettop2(pstack2 s)

//*************銷毀符號棧************************ 

void destorystack1(pstack1 s)

//*************銷毀資料棧************************ 

void destorystack2(pstack2 s)

//************查詢優先權並返回*******************

int checkpriority(char operator_1,char operator_2)

//**************計算中間表示式的值*********************

int count(int a,char ch,int b)

else

return  b/a;

}}  

//*****************計算總表示式的值****************

void sum()

pushstack2(&s2, sum);

}else  

switch(checkpriority(gettop1(&s1) ,ch))  //比較優先順序

}  result=gettop2(&s2);    //取資料棧棧頂元素

destorystack1(&s1);

destorystack2(&s2);

} //******************提示資訊**********************

void message()

//*******************主函式***************************       

int main()

表示式求解

表示式求解是棧應用乙個典型的例子,其基本演算法思想為 1.首先初始化1個運算數棧和1個運算子棧,運算子棧填入 表示棧空。2.對輸入表示式進行逐字節解析,如果是運算元,則直接壓入運算數棧,如果是運算子則進行一下比較 1 如果棧頂運算子優先順序低於讀入運算子優先順序,則將運算子壓棧,繼續解析下面的位元組...

表示式求解

構造包含頂指標,底指標和增量的結構體。然後分別構造乙個只包含運算子的棧 optr 和只包含數字的棧 opnd 之後依次讀入所輸入的表示式。判斷是不是數字,如果是數字就將數字放入數字棧 opnd 如果不是即運算子,讓運算子棧棧頂元素和讀入的運算子進行比較。如果優先順序小於將讀入的運算子入棧,優先順序相...

表示式求解

1 解題思路 構造包含頂指標,底指標和增量的結構體。然後分別構造乙個只包含運算子的棧 optr 和只包含數字的棧 opnd 之後依次讀入所輸入的表示式。判斷是不是數字,如果是數字就將數字放入數字棧 opnd 如果不是即運算子,讓運算子棧棧頂元素和讀入的運算子進行比較。如果優先順序小於將讀入的運算子入...