利用栈求表达式的值文档格式.docx
- 文档编号:14846834
- 上传时间:2022-10-25
- 格式:DOCX
- 页数:10
- 大小:15.85KB
利用栈求表达式的值文档格式.docx
《利用栈求表达式的值文档格式.docx》由会员分享,可在线阅读,更多相关《利用栈求表达式的值文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
语法检查并计算
intpush_operate(intoperate):
将操作码压入堆栈
intpush_num(doublenum):
将操作数压入堆栈
intprocede(intoperate):
处理操作码
intchange_opnd(intoperate):
将字符型操作码转换成优先级
intpush_opnd(intoperate):
intpop_opnd();
将操作码弹出堆栈
intcaculate(interru_opnd):
简单计算+,-,*,/
doublepop_num():
弹出操作数
程序如下:
#include"
stdio.h"
string.h"
stdlib.h"
#defineMAXLEN100
typedefstruct
{
charop;
intlevel;
}opt;
typedefstruct//定义操作符栈
optst[MAXLEN];
inttop;
}op_stack;
typedefstruct//定义值栈
doubleD[MAXLEN];
}D_stack;
//--------对栈操作的定义-------------
optpeek(op_stack*s)//定义看栈顶函数
opterror=;
if(s->
top>
=0)
returns->
st[s->
top];
else
returnerror;
}
intIsEmpty(op_stack*s)//定义判断栈空的函数
top<
0)
return0;
top].op;
charpush(op_stack*s,optc)//定义入栈函数
s->
top++;
top]=c;
returnc.op;
optpop(op_stack*s)//定义出栈函数
opti;
{
i=s->
top].op='
\0'
;
top--;
returni;
}
voidclear(op_stack*s)//定义初始化栈
top=-1;
//-----------------------------definethevaluestack-----------------------
doubleDpeek(D_stack*s)//定义看栈顶函数
D[s->
intDIsEmpty(D_stack*s)//定义判断栈空的函数
return(int)(s->
top]);
doubleDpush(D_stack*s,doublec)//定义入栈函数
returnc;
doubleDpop(D_stack*s)//定义出栈函数
doublei;
top]='
elsereturn0;
voidDclear(D_stack*s)//定义初始化栈
doublecalval(char*exp)
op_stackos;
//定义两个栈
D_stackds;
chartmp[MAXLEN]=;
inti=0,leng;
doubledtmp,dpoptmp;
optA=;
optR=;
optM=;
optD=;
optB=;
optMo=;
clear(&
os);
Dclear(&
ds);
//-----定义初始化结束-----
while(*exp!
='
)
{
while(*exp>
='
0'
&
&
*exp<
9'
||*exp=='
.'
tmp[i++]=*exp++;
dtmp=atof(tmp);
Dpush(&
ds,dtmp);
leng=strlen(tmp);
for(i=0;
i<
leng;
i++)
tmp[i]='
i=0;
//-------------------------------
switch(*exp)
case'
+'
:
if(!
IsEmpty(&
os)||peek(&
os).level<
A.level)
push(&
os,A);
*exp++;
while(IsEmpty(&
os)&
peek(&
os).level>
=A.level)
switch(pop(&
os).op)
%'
:
dpoptmp=Dpop(&
dpoptmp=(float)((int)Dpop(&
ds)%(int)dpoptmp);
ds,dpoptmp);
break;
*'
ds)*Dpop(&
/'
ds)/dpoptmp;
ds)+Dpop(&
-'
ds)-dpoptmp;
R.level)
os,R);
=R.level)
M.level)
os,M);
=M.level)
D.level)
os,D);
=D.level)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 利用 表达式