数据结构课程设计报告魔王语言实验报告

上传人:新** 文档编号:423822081 上传时间:2024-02-02 格式:DOC 页数:21 大小:384.12KB
返回 下载 相关 举报
数据结构课程设计报告魔王语言实验报告_第1页
第1页 / 共21页
数据结构课程设计报告魔王语言实验报告_第2页
第2页 / 共21页
数据结构课程设计报告魔王语言实验报告_第3页
第3页 / 共21页
数据结构课程设计报告魔王语言实验报告_第4页
第4页 / 共21页
数据结构课程设计报告魔王语言实验报告_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《数据结构课程设计报告魔王语言实验报告》由会员分享,可在线阅读,更多相关《数据结构课程设计报告魔王语言实验报告(21页珍藏版)》请在金锄头文库上搜索。

1、西安郵電學院数据结构课程设计报告 题 目: 魔王语言院系名称: 计算机学院 专业名称: 软件工程 班 级: 学生姓名: 学号(8位): 指导教师: 设计起止时间:一. 设计目的1、 熟悉链表、队列、栈、排序、查找、文件等内容的的使用。2、 将数据结构的内容结合到一起使用。3、 熟悉掌握数据结构的内容。4、了解递归与非递归的使用。二. 设计内容以栈和队列为数据结构,使用文件读写、查找等操作,完成对魔王语言的解释。三概要设计 开始1功能模块图; 主函数 结束将结果保存到文件中将魔王语言翻译为汉语意思将魔王的话转化成小写字母 将栈中的元素存入数组中读取文件mean.txt读取文件rule.txt 调

2、用取括号函数 输入魔王说的话2 各个模块详细的功能描述。1. 入栈操作函数 int push(Stack *s,char x) 讲传递过来的字符入栈;2. 出栈操作char pop(Stack *s) 将当前栈顶的字符出栈,并将其返回;3. 入队操作函数int queue_in(Queue *p,char ch) 将传递过来的ch中的字符入队;4. 出队操作char queue_out(Queue *p) 将当前队头的字符出队,并将其返回;5. 去除魔王语言中括号模块void deletenode(Stack *s,Queue *r,char a,int i) 利用队栈的进栈出栈操作,入队出队

3、操作,将魔王语言中的括号去除,使之成为一个字母的序列; 6 .文件读取函数void read_file() ,void word_file()通过文件函数,读取rule和mean文件,并将其输出到终端;7. 将栈中的元素存入数组中void store(char a,Stack *s) 将栈中的元素按次序存入到数组中;8. 魔王语言转字母语言void change(char a)将输入的魔王语言通过循环判断转换成字母语言;9 .将字母语言翻译为人类语言void translate(char a,struct Word *h) 将已经由魔王语言转换成的字母语言通过对照转换成人类语言10. 文件保存

4、函数void save_file(struct Word *h) 将已经转换好的魔王语言保存到自定义路径。四详细设计main函数1功能函数的调用关系图 将结果存文件魔王的话转化成小写从件中读入规则解释为汉意显示从文件中读入汉意调用取括号函数读入魔王所说的话2各功能函数的数据流程图(1)取括号函数deletenode(&s,&r,a,i);入A栈入F栈入目的队列结束将处理结果放回栈一层处理一层括号右括号左括号后非第一个字母左括号后第一个字母括号中内容从Q中弹出一个元素Q是否为空定义变量,初始化栈以及队列开始 流程图: Y N是否为括号中内容 N Y将处理结果放回队列 Y N(2)转化成小写字母函

5、数change(a); 流程图:queue是否为空定义变量,初始化栈以及队列开始 Y N从队列Q中弹出元素放于data中Data为大写字母 N调用的函数执行递归 Y入队列Q结束开始(3)翻译为汉语意思函数translate(a,l); 初始化规则内容存在 N大写字母所对应的规则内容放于数组str中 Y Stri大写 Y 入队列Q,i+ NStri存在 Y结束 N (4) 读大小写对应规则void read_file(); 流程图:开始 打开文件rule.txt打开文件失败 Y从文件中读取信息 N文件结束 Y 保存链表 N 关闭文件结束 开始 (5) 将字母与汉字相匹配流程图开始 初始化data

6、Q是否为空 Y N弹出对头元素data查找data对应的汉字汉字保存到文件result.txt中结束1 重点设计及编码 1. 去括号函数deletenode(&s,&r,a,i);void deletenode(Stack *s,Queue *r,char a,int i)int j,flag;char ch,t;while(i=0)while(i=0)if(ai!=()/用ASCII码比较,判断ai是否为(push(s,ai);i=i-1;elsei=i-1;break;j=0;flag=0;for(j=0;jtop;j+)if(s-elemj=)flag+;if(flag)while(s-

7、top+1&s-elems-top!=)ch=pop(s);queue_in(r,ch);if(s-elems-top=)pop(s);if(r-rear!=r-front)ch=queue_out(r);while(r-front!=r-rear)push(s,ch);t=queue_out(r);push(s,t);push(s,ch);i=s-top;while(i+1)printf(%c,s-elemi);i-; 2 转化成小写字母函数change(a);void change(char a)char b100;int flag=0;int i,j,k,n;i=j=k=0;b0=0;while(ai)/判断是否有大写字母if(ai=A&ai=a&aidata=ai;m-word0=0;while(ai!=yyk.l0)k+;strcat(m-word,yyk.r);m-next=NULL;k=0;i+;n-next=m;n=m;for(m=h-next;m;m=m-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号