中南大学数据结构课程设计报告-魔王语言解释程序.docxVIP

中南大学数据结构课程设计报告-魔王语言解释程序.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
中南大学数据结构课程设计报告-魔王语言解释程序

=中南大学数据结构课程设计报告 题 目 魔王语言解释程序 学生姓名 指导教师 学 院 专业班级 完成时间 2016.07.03 魔王语言解释程序问题引入问题描述有一个魔王总是使用自已的一种非常精练而抽象的语言讲话,没有人能听得懂。但他的语言是可以逐步解释成人能懂的语言的,因为他的语言是由以下两种形式的规则由人的语言逐步抽象上去的:(1)α→β1β2…βm (2)(θβ1β2…βm)→(θβm…β2θβ1θ) 在这两种形式中,从左到右均表示解释。写一个魔王解释程序,将魔王的话解释成人能听懂的话。基本要求用下述两种规则和下述规则(2)实现。设大写字母表示魔王语言的词汇,小写字母表示人的词汇,希腊字母表示可以用大写字母或小写字母代换的变量。魔王语言可含人的词汇。(1) B→tAdA(2) A→sae3. 测试数据B(ehnxgz)B解释成tsaedsaeezegexeneietsaedsae若将小写字母与汉字建立下表所示的对应关系,则魔王说的话是:“天上一只鹅地上一只鹅鹅追鹅赶鹅下鹅蛋鹅恨鹅天上一只鹅地上一只鹅”。tdsaezgxnh天地上一只鹅追赶下蛋恨4.实现提示将魔王的语言自右至左进栈,总是处理栈顶字符。若是开括号,则逐一出栈,将字母顺序入队列,直至闭括号出栈,并按规则要求逐一出队列在处理后入栈。5.本程序采用的是顺序栈。基本操作列表:据括号的个数设一个标记。记下括号的位置。根据标记来执行依次的操作。没有括号,直接进队,据翻译函数2输出人的语言。有括号,分为括号内的和括号外的。,根据括号的位置:括号外的从右到左入栈;括号内的从左到右入栈,并且依次插入括号内的第一个字符。据翻译函数2 出栈并且翻译。二、需求分析1. 本演示程序中,魔王语言限制在小写字母‘a’-‘z’之间,且必须限制在括号内以及大写字母A和B。且允许出现重复字符或非法字符,程序运用时自动过滤去,输出的运算结果中将不含重复字符和非法字符。2. 魔王语言遵守如下规则:(θδ1δ2δ3…δn)θδnθδn-1…θδ1θBtAdAAsae3. 演示程序以用户和计算机对话的形式进行,即在计算机终端中显示提示信息之后,有用户自行选择下一步命令,相应输入数据和运算结果在其后显示。4. 程序的执行命令有:1)选择操作 2)任意键结束5. 数据测试B(ehnxgz)B解释成:tsaedsaeezegexenehetsaedsae若将小写字母与汉字建立下表所示的对应关系,则魔王说的话是:“天上一只鹅地上一只鹅鹅追鹅赶鹅下鹅蛋鹅恨鹅天上一只鹅地上一只鹅”。tdsaezgxnh天地上一只鹅追赶下蛋恨三、概要设计为实现上述功能,需要抽象数据类型--栈。1. 栈抽象数据类型定义ADT STACK{数据对象:D={ai|ai∈Elemset,i=1,2,3,…n,n=0}数据关系:R1={ai-1,ai|ai-1,ai∈D,i=2, … n}基本操作:init_Stack(S)操作结果:构造一个空栈S。push_Stack(S,c)初始条件:栈S已存在。操作结果:插入元素c到栈顶。pop_Stack(S, e)初始条件:栈S已存在且非空。操作结果:删除栈s的栈顶元素,并用e返回其值。is_empty(S)初始条件:栈S已存在。操作结果:若为空栈,返回true,否则返回false。top_elem(S,top)初始条件:栈S已存在。操作结果:若为空栈,提示空栈,否则用top返回栈顶元素。traserve(S)初始条件:栈S已存在。操作结果:依次遍历栈s中的元素。length_Stack(S)初始条件:栈S已存在。操作结果:若为空栈,返回0,否则返回栈长。clear(S)初始条件:栈S已存在。操作结果:将s清为空栈。destory(S)初始条件:栈S已存在。操作结果:栈S被销毁。}ADTSTACK┋………..栈顶6F5EpTop4DCpBottom32BA1头节点0首节点(抽象数据类型结构图)2.本程序主要包括以下几个模块:1)主程序模块:int main(){调用翻译函数;提示运行成功;返回true,即运行结束;}2)翻译程序模块:void translate(){定义栈和变量;初始化部分栈;输入魔王语言及记录;翻译并输出结果;提示运行完毕!}3)栈模块初始化;压栈;出栈;判断是否为空;取栈顶元素;遍历;求栈长;清空和销毁;4)模块间的关系:调用调用四、详细设计1)流程图:魔王语言入S栈Yes栈S为空?ch2入T栈栈A中的元素入T栈YesNoNo取S栈栈顶元素 ch1ch2=’A’ ?YesYesch1=’B’?No取B栈栈顶元素 ch2栈B为空 ?NoYesch1=’A’ ?栈A中的元素入T栈NoNoch

文档评论(0)

wnqwwy20 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:7014141164000003

1亿VIP精品文档

相关文档