二元的表示式的計算(資料結構)

2021-08-10 09:24:36 字數 988 閱讀 1019

#include

#include

#include

#define error 0

#define ok 1

#define overflow -1

#define maxsize 100 

#define scale 7 

using namespace std;

char sum[scale]=; //合法識別符號 

char prior[8][8] =

; typedef int status;

typedef char selemtype;

typedef struct   //順序棧的儲存結構 

sqstack;

status initstack(sqstack &s)  //順序棧的初始化   

status push(sqstack &s,selemtype e)  //入棧 

status pop(sqstack &s,selemtype &e)   //出棧

selemtype gettop(sqstack s)   //取棧頂元素

status in(selemtype c,selemtype *test)//判斷c是否是運算子 

return flag; 

}status returnoptr(selemtype op,selemtype *test)     //判斷輸入的運算子是哪個運算子  

}status precede(char t1, char t2)    //判斷棧頂元素與讀入的運算子之間的優先順序 

selemtype operate(selemtype a,selemtype theta,selemtype b)//計算a,b操作後的數值 

return c;

}int evaluateexpression()

else} }

return gettop(opnd)-'0';

}int main()

棧實現表示式計算 資料結構

思路 所包含的運算子有 1 建立兩個棧,乙個用來儲存運算元,另乙個用來儲存運算子,開始時在運算子棧中先壓入 0 乙個表示式的結束符。2 然後從左至右依次讀取表示式中的各個符號 運算元或者運算子 3 如果讀到的是運算元直接存入運算元棧 4 如果讀到的是運算子,則作進一步判斷 若讀到的是 0 結束符,而...

資料結構 表示式計算

表示式求值時資料結構的基礎演算法之一,其主要思想就是堆疊的使用。下面將詳細的介紹演算法的各個部分 表示式求值演算法主要流程如下 首先要說明的是字尾表示式,字尾表示式即 不包含括號,運算子放在兩個運算物件的後面,所有的計算按運算子出現的順序,嚴格從左向右進行 不再考慮運算子的優先規則,如 2 1 3 ...

算數表示式的計算

一 算數表示式的兩種表示 在計算機中進行算數表示式的計算是通過棧來實現的。算數表示式的兩種表示方法 即中綴表示式和字尾表示式。把雙目運算子出現在兩個運算元中間的這種習慣表示叫做算數表示式的中綴表示,這種算數表示式被稱為中綴算數表示式或中綴表示式。就是平常我們習慣的表示方式 例如 2 5 6 中綴表示...