免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉理工大学理学院数学系课程实验报告课 程 名 称: 数据结构 班级信计0803日 期2010.11.15成绩评定姓名赵威实验室理学院-108老师签名实验名称用栈和队列实现魔王语言所用软件VC+实验目的及内容主要功能:魔王总是使用自己的一种非常精练而抽象的语言讲话,没人能听懂,但他的语言是可逐步解释成人能听懂的语言,因为他的语言是由以下两种形式的规则由人的语言逐步抽象上去的: - 1)a- (B1)(B2).(Bm) 2)(op1)(p2).(pn)-o(pn)o(p(n-1).o(p1)o -在这两种形式中,从左到右均表示解释.试写一个魔王语言的解释系统,把他的话解释成人能听得懂的话. 基本要求: 用下述两条具体规则和上述规则形式(2)实现.设大写字母表示魔王语言的词汇;小写字母表示人的语言的词汇;希腊字母表示可以用大写字母或小写字母代换的变量.魔王语言可含人的词汇. 1) B - tAdA 2) A - sae实验原理步骤、程序清单如下:魔王.cpp/*-定义头文件-*/#include#include#include/*-定义全局变量-*/int top=0;int find=0;/top=0;char transl200;char leag200;char link100;int rear=1;/rear=1;/*-MAIN()主函数-*/int main()char pop(); /定义出栈函数char ml2200; /定义两个规则,把它们存放到ml中coutendl;cout * 魔王语言程序设计 * endl;cout * endl;cout * endl;cout * 本程序可以翻译魔王语言且按以下两条形式规则由人 * endl;cout * * endl;cout *的语言逐步抽象上去: * endl;cout * * endl;cout1234. * endl;cout * * endl;cout321 * endl;cout * * endl;cout * 下面只输入2个第一种形式的规则,且后输入的可以嵌* endl;cout * * endl;cout *套已输入的规则。 * endl;cout * * endl;cout * endl;cout * endl;cout1234. / (123)321 /下面只输入2个第一种形式的规则,且后输入的可以嵌套已输入的规则 /*开始输入规则A和B,A比B先输入,再输入B,这样B就可以嵌套A*/cout以下请开始翻译:endl;cout请先输入一组形式规则:endl; cout;cinml0;cout;cinml1;coutendl;/*输入魔王语言,其规则为大写为魔王语言,只限定A和B(暂时),小写为人类语言,输入时用括号括起来*/ coutleag;char temp100; /定义一个缓冲区,存放B的翻译int sizeA=0; /定义A的长度 sizeA=strlen(ml0); int wh=0; /定义缓冲区中的位置变量for(int i=0;ml1i!=0;i+) /开始翻译Bif(ml1i=A) /如果嵌套了A/couthere is doing!;for(int n=0;nsizeA;n+,wh+)tempwh=ml0n; /翻译至缓存区elsetempwh=ml1i; /如果不是A则原样写入wh+;tempwh=0; /为缓存区加上结束符strcpy(ml1,temp); /把缓存区中的串给ml1int sizeB=0; /定义B的长度 sizeB=strlen(ml1);int length;length=strlen(leag); /取得魔王语言的长度int ch; /定义一个变量保存字符int a;int b;/*-开始翻译魔王语言,并把结果存至transl中-*/for(int t=0;tlength;t+) ch=pop(); switch(ch)case A: /如果是A的话for(a=0;asizeA;a+,find+)translfind=ml0a;break; case B: /如果是B的话 for(b=0;bsizeB;b+,find+)translfind=ml1b;break; case (: /但ch=(时,把括号中的小写字母保存至link中ch=pop();link0=ch; /先把第一个字符存入,后面的从link1开始while(ch!=) ch=pop();linkrear=ch; /记得rear的初值为1rear+; /由于while循环的原因,在link队列中多加了一个右括号字符,且rear指针向后多移了2个单位 /故使rear减2rear=rear-2; translfind+=link0;for(rear;rear!=0;rear-)translfind+=linkrear; translfind+=link0; /为了使后面的翻译可行话,得把rear还原为初值,即rear=1rear=1;break; default:break;/switch结束/*-翻译魔鬼语言结束,结果已存至transl中-*/for结束cout经过翻译,魔王想表达的语言是:; /输出得到的翻译语言 coutendl;couttransl;coutendl;char wc;coutwc; return 0;char pop() /出栈函数的实现return leagtop+;实验结果及分析 调试过程中的问题及系统测试情况输入输出:*输入注意:先输入的规则可以被后输入的规则嵌套,后输入的可以嵌套先输入的,但是注意先输入的不可以嵌套后输入的。输入魔王语言时,人类
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 城市广场排水沟铺设工程合同模板
- 综合管理部工作制度与指南
- 风力发电解决方案
- 土地复垦解除书
- 婚庆公司婚礼策划档案维护策略
- 供热工程项目备案申请
- 加油站标识标牌招投标函范本
- 保险行业子公司管理模板
- 施工合同无效索赔
- 工业园区道路改造合同
- 湘教版高中地理必修1自然地理环境的整体性教案
- 大学生职业生涯规划与就业指导课件(全套)
- CT影像诊断学课件
- 中医医院骨伤科医疗质量管理检查评分细则
- 带状疱疹病例讨论
- (新教材)粤教科技版三年级上册小学科学 第16课《它们占据空间吗》教学课件
- 田径比赛裁判工作方法与安排
- JJG(交通)105-2012 沥青混合料理论最大相对密度仪检定规程-(高清现行)
- 反对三股势力和两面人的发声亮剑发言材料精选4篇
- 现代管理学原理课件
- 超声引导下的神经阻滞ppt课件(PPT 77页)
评论
0/150
提交评论