資料結構 實驗三 算術表示式求值演示
//基本上已經ok了~~~~
/*測試用例:
8;1+2+3+4;88-1*5;1024/4*8;1024/(4*8);(20+2)*(6/2);
3-3-3;8/(9-8);2*(6+2*(3+6*(6+6)));(((6+6)*6+3)*2+6)*2
#include
#include
#include
using namespace std;
typedef int elemtype;
const int stack_init_size=100;
const int stackincrement=10;
typedef struct
stack;
int ifemptystack(stack s);
void initstack(stack &s);
void emptystack(stack &s);
void push(stack &s, elemtype e);
void pop(stack &s, elemtype &e);
void showstack(stack s);
int in(char ch);
char precede(char a, char b);
int operate(int a, char f, int b);
void evaluateexpression();
int main()
void initstack(stack &s)
void emptystack(stack &s)
void push(stack &s, elemtype e)
*s.top++=e;
return ;
}void pop(stack &s, elemtype &e)
elemtype gettop(stack &s)
void showstack(stack s)
int in(char ch)
return res;
}char precede(char a, char b),,
,,,,
};switch(a)
switch(b)
if(form[i][j]==1)
return '>';
else if(form[i][j])
return '
else
return '=';
}int operate(int a, char f, int b)
return 0;
}void evaluateexpression()
while(c>='0'&&c<='9');
d[i]='\0';
num=atoi(d);
push(opnd, num);
}else if(in(c))}}
c=getchar();//接收最後輸入的乙個回車符!!!否則在主函式中只能輸入一次...
cout<
showstack(opnd);
cout執行示意圖:
算術表示式求值 資料結構 C語言
1.實驗目的 熟練掌握棧的基本操作,深入了解棧的特性,能在實際問題的背景下靈活運用他們,並加深對這種結構的理解。2.實驗內容 設計乙個程式,演示用算符優先法對算術表示式求值的過程。以字串行的形式從終端輸入語法正確的 不含變數的整數表示式。利用教科書表3.1給出的算符優先關係,實現對算術四則運算混合運...
資料結構之 用C 實現算術表示式求值
基本功能 利用棧實現整數的加減乘除運算。使用方法 輸入表示式之後再輸入 表示表示式結束,如下圖 缺點 不能進行小數的運算 如下 include include include using namespace std define maxnum 50 class stack for number fl...
資料結構實驗十 利用棧實現算術表示式的求值
問題描述 利用棧實現算術表示式的求值。可以簡單一些,假設表示式中含有一位整數,以及 但不受此限制。難易程度 中 實驗目的 1 掌握棧的應用。2 掌握算符優先表示式求值的演算法。3 掌握字串處理和數值的轉換。實驗內容及要求 1 表示式以字串形式輸入,並以 開始和結束 也作為演算法來處理 如輸入 6 3...