后缀表达式的计算.doc_第1页
后缀表达式的计算.doc_第2页
后缀表达式的计算.doc_第3页
后缀表达式的计算.doc_第4页
后缀表达式的计算.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

江南大学物联网工程学院上机报告课程名称数据结构上机名称后缀表达式的计算上机日期2016.3.18班级姓名学号上机报告要求1上机名称2上机要求3上机环境4程序清单(写明运行结果)5上机体会1上机名称后缀表达式的计算2上机要求按常规形式输入算术表达式(例如:输入2*(6-4)+8/4),要求能够: 生成表达式的后缀表示,并输出; 基于表达式的后缀表示,对该表达式求值; 编写一个主程序对表达式求值函数进行测试。3上机环境Visual C+ 6.04程序清单(写明运行结果)#include #include#include #define ERROR 0 #define OK 1#define N 50 #define STACK_INT_SIZE 10 #define Queue_Size 20 typedef int ElemType; typedef struct char QdataQueue_Size;int front,rear; SeqQueue; typedef struct ElemType *base; ElemType *top; int stacksize; SqStack; SqStack OPTR,OPND; SeqQueue SeQ; char PreTab77= , , , , ,x, ,front=0; Q-rear=0; int EnterQueue(SeqQueue *Q,char c) if (Q-rear=Queue_Size) printf(n队列满,无法入队!n); return ERROR; Q-QdataQ-rear=c; Q-rear+; return OK; int OutQueue(SeqQueue *Q,char *e) if(Q-front=Q-rear) printf(n队列空,无法出队!n); return ERROR; *e=Q-QdataQ-front+; return OK; int InitStack(SqStack *S) S-base=(ElemType *)malloc(STACK_INT_SIZE *sizeof(ElemType); if(!S-base) return ERROR; S-top=S-base; S-stacksize=STACK_INT_SIZE; return OK; int Push(SqStack *S,ElemType e) if (S-top-S-base)STACK_INT_SIZE) return 0; *S-top=e; S-top+; return OK; int Pop(SqStack *S) int e; if (S-top=S-base) return 0; S-top-; e=*S-top; return *S-top; int IsOps(char c) int i=0; char *p; p=OpretorS; while(i=0;) if(si=48&si=f(stacktop) top+; stacktop=si;break; else pj=stacktop; top-;j+; if(si=() while(stacktop!=) pj=stacktop; top-;j+; top-; i-; while(top!=0) pj=stacktop; j+; top-; pj=0; printf(n前缀表达式为: ); for(;j=0;j-) printf(%c,pj); printf(n); int main() char *ScanChar; char c1,c; char TheOp; int b,a,digit; InitStack(&OPTR); Push(&OPTR,#); InitStack(&OPND); initQueue(&SeQ); ScanChar=Express; c=*ScanChar; while(c!=#|*OPTR.top!=#) if (c=0) c=#; if (IsOps(c)=7) digit=c-0; Push(&OPND,digit); EnterQueue(&SeQ,c); c=*+ScanChar; else c1=*(OPTR.top-1); switch(Precede(c1,c) case:TheOp=Pop (&OPTR ); EnterQueue(&SeQ,TheOp); b=Pop(&OPND);a=Pop(&OPND); Push(&OPND,Operate(a,TheOp,b);break; default:printf(n算术表达式错误!n); return ERROR; printf(算术表达式为:%s n后缀表达式为:,Express); while(SeQ.rear-SeQ.front!=0) OutQueue(&SeQ,&c); printf(%c,c); convert(Express); printf(其结果为:%dn,Pop(&OPND); return 0; 5上机体会这次的上机实验感觉有点难,从上机课上的时候只有几个人交就可以看出来一些。自己花了许多的精力然而一开始还是没完成全部的要求,只写完了一部分即中缀转后缀表达式的部分,中缀转前缀的表达式在这一周内才勉勉强强写完。另外,这次上机实验也让我意识到,有时我们也需要参考一下别人所写的程序,看看别人的思路,也许某种时刻,别人的程序会开阔你的思路,同时我们还需要和同学多交流交流,讨论一下自己关于某个问题的看法想法什么

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论