ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:37.56KB ,
资源ID:15728256      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/15728256.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(魔王语言数据结构试验报告Word格式文档下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

魔王语言数据结构试验报告Word格式文档下载.docx

1、dsaezgxnh天地上一只鹅追赶下蛋恨测试数据 B(einxgz)B解释成tsaedsaeezegexeneietsaedsae 若将小写字母与汉字建立下表所示的对应关系,则魔王说的话是“天上一个鹅地上一个鹅鹅追鹅赶鹅下鹅蛋鹅恨鹅天上一个鹅地上一个鹅。” 实现提示 将魔王的语言自右至左进栈,总是处理栈顶。若是开括号,则逐一出栈,将字母顺序入队列,直至闭括号出栈,并按规则要求逐一出队列再处理后入栈。其他情形较简单,请读者 思考如何处理,应首先实现栈和队列的基本运算二、概要设计 为实现上述程序功能,应以栈和队列来表示。1.设定栈的抽象数据类型定义为:ADT Stack 数据对象:D=ai | a

2、iCharSet,I=1,2,.,n,n0 数据关系:R1= |ai-1,aiD,I=1,2,.,n 基本操作: ListInitiate (&S) 操作结果:构造一个空栈S。StackEmpty(S) 初始条件:栈S已经存在。若栈S为空栈,则返回TRUE,否则返回FALSE。Push(&S,e)在栈S的栈顶插入新的栈顶元素e。Pop(&S,&e)删除S的栈顶元素,并以e返回其值。 ADT Stack2. 设定队列的抽象数据类型定义为:ADTQueue D=ai | aiElemSet,I=1,2,.,n,n0 ListInitiate (&Q) 构造一个空队列Q。StackEmpty(Q)队

3、列Q已经存在。若队列Q为空栈,则返回TRUE,否则返回FALSE。EnQueue(&Q,e)插入元素e为Q的新的队尾元素。DeQueue(&Q,&删除Q的对头元素,并以e返回其值。 ADT Queue程序包含四个模块:1) 主程序模块:Void main()初始化;For()接受处理命令;接受处理;2) 栈模块实现栈的抽象数据类型;3) 队列模块实现队列的抽象数据类型。4) 魔王语言解释模块定义线性表的结点结构。各模块的之间的调用关系如下: 主程序模块 魔王语言解释模块 栈模块队列模块三、详细设计1. 栈类型struct Stack char* base; char* top; int sta

4、cksize;2. 队列类型struct Stackstruct LinkQueue struct Queue* front; struct Queue* rear;3.栈的基本操作/构造栈void InitStack(struct Stack &s) s.base=(char*)malloc(STACK_INIT_SIZE*sizeof(char); s.top=s.base; s.stacksize=STACK_INIT_SIZE;/往栈中压入元素void Push(struct Stack &s,char e) if(s.top-s.base=STACK_INIT_SIZE) s.bas

5、e=(char*)realloc(s.base,(s.stacksize+STACK_INCREMENT)*sizeof(char); s.top=s.base+s.stacksize; s.stacksize+=STACK_INCREMENT; *(s.top)=e; s.top+;/取出栈中的元素void Pop(struct Stack &s,char &e) e=*-s.top;/判断栈是否为空int StackEmpty(struct Stack s) if(s.top=s.base) return 1; else return 0;/清空栈void ClearStack(struc

6、t Stack &s) 4队列的基本操作/构造队列void InitQueue(struct LinkQueue &q) q.front=q.rear=(struct Queue*)malloc(sizeof(struct Queue); q.front-next=NULL;/元素入队void EnQueue(struct LinkQueue &q,char e) struct Queue* p; p=(struct Queue*)malloc(sizeof(struct Queue); p-data=e; q.rear-next=p; q.rear=p;/元素出队void DeQueue(s

7、truct LinkQueue &q,char &e) p=q.front-next; e=p-data;next=p- if(q.rear=p) q.rear=q.front; free(p);/判断队列是否为空,如果对为空,返回,否则返回int QueueEmpty(struct LinkQueue q) if(q.front=q.rear) return 1;/把字符数组从右至左压入栈中void InStack(char* ch,struct Stack & int i,L=0; while(chL!=0) L+; for(i=L-1;i=0;i-) Push(s,chi); 4.主函数

8、和其他函数的算法(含注释):#includestdlib.h#define STACK_INIT_SIZE 100#define STACK_INCREMENT 10int main() printf(*n);* *n* 魔王语言解释系统 * *n* 班级:统计2011级 *n* 姓名: 陈枫 *n* 学号: 201101051304 *n*nn int xunhuan=1; printf(请输入你想要解释的魔王语言:n while (xunhuan=1) /一个总循环控制整个程序的重复进行 char A=sae; /大写字母作为字符数组名存放小写字母 char B=tsaedsae char

9、 flag=0 /flag用来标记处理括号 char e1,key,e2,e; int mark=1; /标记输入的魔王语言是否在允许的范围之内 int f=1; / 判断括号是否匹配 char MoWang100=0 /定义一个魔王变量,存放待解释的语言字符 struct Stack S; /作为栈存储元素,为后续操作和输出做准备 struct Stack temp; /用来处理括号外的元素 InitStack(S); InitStack(temp); struct LinkQueue Q; InitQueue(Q); gets(MoWang); /变量MoWang存储输入的语言 InStack(MoWang,S); /把要解释的魔王语言压入栈中 while(!StackEmpty(S) /把魔王语言进行出栈,不符合语言的进行提示 Pop(S,e1); if(e1=() if(StackEmpty(S) 魔王语言错误! mark=0;f=0; break; StackEmpty(S) ) f=1; else if(!(e1a&e1z)&!AZ) 魔王语言错误! if(mark=0) if(f!=1) else if(e1=)if(

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1