資料結構之 用C 實現算術表示式求值

2021-07-09 04:34:09 字數 1233 閱讀 2641

基本功能:利用棧實現整數的加減乘除運算。

使用方法:輸入表示式之後再輸入#表示表示式結束,如下圖:

缺點:不能進行小數的運算

**如下:

#include #include #include using namespace std;

#define maxnum 50

class stack_for_number

float push(float);

float pop(void);

float get_top();

}; //運算數棧

class stack_for_operator

char push(char);

char pop(void);

char get_top();

}; //運算子棧

float operate(float a,char b,float c)

case'-':

case'*':

case'/':

default:break;

}} //計算當前算式的結果

char precede(char a,char b)

case'-':

case'*':

case'/':

case'(':

case')':

case'#':

}} //運算子優先順序比較

float calculateexpression(stack_for_number opnd,stack_for_operator optr)

// i為當前讀入數字位數的計數器

for(j=0;j':

float x=opnd.pop();float y=opnd.pop();

opnd.push(operate(y,optr.pop(),x));

break;

} //switch

} //while

return opnd.get_top();

} float stack_for_number::push(float e)

{ if(top==maxnum)

{ cout<

算術表示式求值 資料結構 C語言

1.實驗目的 熟練掌握棧的基本操作,深入了解棧的特性,能在實際問題的背景下靈活運用他們,並加深對這種結構的理解。2.實驗內容 設計乙個程式,演示用算符優先法對算術表示式求值的過程。以字串行的形式從終端輸入語法正確的 不含變數的整數表示式。利用教科書表3.1給出的算符優先關係,實現對算術四則運算混合運...

資料結構之用棧實現逆波蘭表示式

逆波蘭表示式也稱為字尾表示式,它將乙個算數表示式不包含括號,運算子放在兩個運算物件的後面,所有的計算按運算子出現的順序,嚴格從左向右進行,如下圖所示 在這裡我們可以運用棧的特點來實現字尾表示式,思路如下 1.首先當遇到運算運算元時將其進行push操作 2.當遇到操作符是將此時的棧pop兩次,先取出的...

簡單算術表示式C 實現

輸入的算術表示式是中綴表示式,由於操作符的優先順序不同,不能直接進行求解,而字尾表示式的計算不需要判別操作符的優先順序,所以我實現算術表示式的思路是 1 應用堆疊將中綴表示式轉化為字尾表示式,2 用堆疊實現字尾表示式求值。用堆疊實現字尾表示式求值的過程 從左到右讀入字尾表示式的各項,並根據讀入的物件...