資源簡介
數(shù)據(jù)結(jié)構(gòu) 棧 表達(dá)式求值數(shù)據(jù)結(jié)構(gòu) 棧 表達(dá)式求值數(shù)據(jù)結(jié)構(gòu) 棧 表達(dá)式求值

代碼片段和文件信息
#include“biaodashi.h“
int?InitStack(SqStack?*S)
{
(*S).base?=?(SElemType?*)malloc(STACK_INIT_SIZE*sizeof(SElemType));
if(?!(*S).base?)
exit(0);
(*S).top?=?(*S).base;
(*S).stacksize?=?STACK_INIT_SIZE;
return?1;
}
int?GetTop(SqStack?SSElemType?*e)
{
if(S.top?>?S.base)
{
*e?=?*(S.top-1);
return?1;
}
else
return?0;
}
int?Push(SqStack?*S?SElemType?e)
{
if((*S).top?-?(*S).base?>=?(*S).stacksize)
{
(*S).base?=?(SElemType?*)realloc((*S).base
((*S).stacksize?+?STACKINCREMENT)?*?sizeof(SElemType));
if(?!(*S).base?)
exit(0);
(*S).top?=?(*S).base+(*S).stacksize;
(*S).stacksize?+=?STACKINCREMENT;
}
*((*S).top)++=e;
return?1;
}
int?Pop(SqStack?*SSElemType?*e)
{
if((*S).top?==?(*S).base)
return?0;
*e?=?*--(*S).top;
return?1;
}
SElemType?Precede(SElemType?t1SElemType?t2)
{
SElemType?f;
????switch(t2)
{
case?‘+‘:
case?‘-‘:if(t1==‘(‘||t1==‘#‘)
????????????????f=‘<‘;
??????????????else
????????????????f=‘>‘;
??????????????break;
?????case?‘*‘:
?????case?‘/‘:if(t1==‘*‘||t1==‘/‘||t1==‘)‘)
????????????????f=‘>‘;
??????????????else
????????????????f=‘<‘;
??????????????break;
?????case?‘(‘:if(t1==‘)‘)
??????????????{
????????????????printf(“ERROR\n“);
????????????????exit(0);
??????????????}
??????????????else
????????????????f=‘<‘;
??????????????break;
?????case?‘)‘:switch(t1)
??????????????{
????????????????case?‘(‘:f=‘=‘;
?????????????????????????break;
????????????????case?‘#‘:printf(“ERROR\n“);
?????????????????????????exit(0);
????????????????default:?f=‘>‘;
??????????????}
??????????????break;
?????case?‘#‘:switch(t1)
??????????????{
????????????????case?‘#‘:f=‘=‘;
?????????????????????????break;
????????????????case?‘(‘:printf(“ERROR\n“);
?????????????????????????exit(0);
????????????????default:?f=‘>‘;
??????????????}
}
return?f;
}
int?In(SElemType?c)
{
switch(c)
{
case‘+‘:
????case‘-‘:
case‘*‘:
case‘/‘:
case‘(‘:
case‘)‘:
case‘#‘:
???????return?1;
default:
???????return?0;
}
?}
SElemType?Operate(SElemType?aSElemType?thetaSElemType?b)
{
SElemType?c;
switch(theta)
{
case‘+‘:
c=a+b;
break;
case‘-‘:
c=a-b;
break;
case‘*‘:
c=a*b;
break;
case‘/‘:
c=a/b;
}
return?c;
}
SElemType?Evaluateexpression()
{
SqStack?OPTROPND;
SElemType?abdxtheta;
char?c;
char?z[10];
int?i;
InitStack(&OPTR);
Push(&OPTR‘#‘);
InitStack(&OPND);
c=getchar();
GetTop(OPTR&x);
while(c!=‘#‘||x!=‘#‘)
{
if(In(c))
switch(Precede(xc))
{
?????????case‘<‘:Push(&OPTRc);
?????????????????c=getchar();
?????????????????break;
?????????case‘=‘:Pop(&OPTR&x);
?????????????????c=getchar();
?????????????????break;
?????????case‘>‘:Pop(&OPTR&theta);
?????????????????Pop(&OPND&b);
?????????????????Pop(&OPND&a);
?????????????????Push(&OPNDOperate(athetab));
?????????????????break;
}
else?if(c>=‘0‘&&c<=‘9‘)
{
i=0;
do
{
z[i]
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3224??2011-10-30?22:04??biaodashi\biaodashi.c
?????文件???????4450??2011-10-30?23:10??biaodashi\biaodashi.dsp
????I.A....???????543??2011-11-22?00:07??biaodashi\biaodashi.dsw
?????文件????????213??2011-10-30?22:04??biaodashi\biaodashi.h
?????文件??????50176??2011-11-20?18:03??biaodashi\biaodashi.ncb
????I.A....?????48640??2011-11-22?00:07??biaodashi\biaodashi.opt
?????文件???????1689??2011-10-30?22:04??biaodashi\biaodashi.plg
?????文件????????157??2011-11-10?01:44??biaodashi\biaodashitest.c
?????文件?????168034??2011-10-30?22:04??biaodashi\Debug\biaodashi.exe
?????文件?????189528??2011-10-30?22:04??biaodashi\Debug\biaodashi.ilk
?????文件??????10169??2011-10-30?22:04??biaodashi\Debug\biaodashi.obj
?????文件?????177960??2011-10-30?22:04??biaodashi\Debug\biaodashi.pch
?????文件?????377856??2011-10-30?22:04??biaodashi\Debug\biaodashi.pdb
?????文件???????2894??2011-10-30?22:04??biaodashi\Debug\biaodashitest.obj
?????文件??????33792??2011-10-30?22:04??biaodashi\Debug\vc60.idb
?????文件??????53248??2011-10-30?22:04??biaodashi\Debug\vc60.pdb
????I..D...?????????0??2011-11-22?00:07??biaodashi\Debug
?????目錄??????????0??2011-11-20?18:03??biaodashi
-----------?---------??----------?-----??----
??????????????1122573????????????????????18
評論
共有 條評論