资源描述:
《后缀表达式的计算.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、江南大学物联网工程学院上机报告课程名称数据结构上机名称后缀表达式的计算上机日期2016.3.18班 级姓 名学 号上机报告要求 1.上机名称 2.上机要求 3.上机环境 4.程序清单(写明运行结果) 5.上机体会1.上机名称后缀表达式的计算2.上机要求按常规形式输入算术表达式(例如:输入2*(6-4)+8/4),要求能够:⑴生成表达式的后缀表示,并输出;⑵基于表达式的后缀表示,对该表达式求值;⑶编写一个主程序对表达式求值函数进行测试。3.上机环境VisualC++6.04.程序清单(写明运行结果)#include#inclu
2、de#include#defineERROR0#defineOK1#defineN50#defineSTACK_INT_SIZE10#defineQueue_Size20typedefintElemType;typedefstruct{charQdata[Queue_Size];intfront,rear;}SeqQueue;typedefstruct{ElemType*base;ElemType*top;intstacksize;}SqStack;SqStackOPTR,OPND;SeqQueueSeQ;c
3、harPreTab[7][7]={{'>','>','<','<','<','>','>'},{'>','>','<','<','<','>','>'},{'>','>','>','>','<','>','>'},{'>','>','>','>','<','>','>'},{'<','<','<','<','<','=','x'},{'>','>','>','>','x','>','>'},{'<','<','<','<','<','x','='}};char*OpretorS="+-*/()#";char*Express="2*(6-4)+8/4
4、";intInitStack(SqStack*S);intpush(SqStack*S,ElemType*e);intPop(SqStack*S);voidinitQueue(SeqQueue*Q){Q->front=0;Q->rear=0;}intEnterQueue(SeqQueue*Q,charc){if(Q->rear==Queue_Size){printf("队列满,无法入队!");returnERROR;}Q->Qdata[Q->rear]=c;Q->rear++;returnOK;}intOutQueue(SeqQueue*Q
5、,char*e){if(Q->front==Q->rear){printf("队列空,无法出队!");returnERROR;}*e=Q->Qdata[Q->front++];returnOK;}intInitStack(SqStack*S){S->base=(ElemType*)malloc(STACK_INT_SIZE*sizeof(ElemType));if(!S->base)returnERROR;S->top=S->base;S->stacksize=STACK_INT_SIZE;returnOK;}intPush(SqStack
6、*S,ElemTypee){if((S->top-S->base)>STACK_INT_SIZE)return0;*S->top=e;S->top++;returnOK;}intPop(SqStack*S){inte;if(S->top==S->base)return0;S->top--;e=*S->top;return*S->top;}intIsOps(charc){inti=0;char*p;p=OpretorS;while(i<7){if(*p++==c)break;i++;}returni;}charPrecede(charc1,charc
7、2){inti,j;i=IsOps(c1);j=IsOps(c2);if(PreTab[i][j]=='x')return0;returnPreTab[i][j];}intOperate(inta,charTheOp,intb){switch(TheOp){case'+':returna+b;case'-':returna-b;case'*':returna*b;case'/':returna/b;}return0;}intf(charc){intf=-1;switch(c){case'+':case'-':f=1;break;case'*':ca
8、se'/':f=2;break;default:f=0;break;}returnf;}intOperator(charc