基本功能:利用棧實現整數的加減乘除運算。
使用方法:輸入表示式之後再輸入#表示表示式結束,如下圖:
缺點:不能進行小數的運算
**如下:
#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 用堆疊實現字尾表示式求值。用堆疊實現字尾表示式求值的過程 從左到右讀入字尾表示式的各項,並根據讀入的物件...