数据结构课程设计魔王语言解释 .docVIP

  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文档。上传文档
查看更多
数据结构课程设计魔王语言解释 .doc

实习2、魔王语言解释 需求分析 问题描述 有一个魔王总是使用自己的一种非常精练而抽象的语言讲话,没人能听的懂,但他的 语言是可以逐步解释成人能懂得语言的,因为他的语言是由以下两种形式的规则由人的语 言逐步抽象上去的: a-3 1 132 ... Pn ⑵(()6 1 62 ... 6n) —0 8n 0 6 n~l ... 0 8 1 0 在这两种形式中,从左到右均表示解释。试写一个魔王解释系统,把他的话解释成人 能听懂得话。 基本要求 用下述两条具体规则和上述规则形式(2)实现。设大写字母表示魔王语言的词汇;小 写字母表示人的语言同汇;希腊字母表示可以用大写或小写字母代换的变量。魔王语言可 含人的词汇。 (1) B—〉tAdA A 一sae 测试数据 B (ehnxg z) B 角军释成 tsa edsaeezege xenehetsae dsae 若将小写字母与汉字建立下表所示的对应关系,则魔王说的话是“天上一个鹅地上一 个鹅鹅追鹅赶鹅下鹅蛋鹅恨鹅天上一个鹅地上一个鹅”。 实现提示 将魔王的语言自右至左进栈,总是处理桟顶字符。若是开括号,则逐一出栈,将字母 顺序入队列,直至闭括号出栈,并按规则要求逐一出队列再处理后入栈。其他情形较简单, 请读者思考如何处理。应首先实现找和队列的基本操作。 概要设计 1. 设定栈的抽象数据类型定义: ADT Stack { 数据对象:D={a j| aj^Char Set, i= 1,2, n” n^O } 数据关系:Rl={ Om ,ai | a i.i/aieDzaj.iaj/i =1,2 ,n} 基本操作: lnitStack(*S) 操作结果:构造一个空栈。 Push(*S ze) 初始条件:栈S已存在 操作结果:在栈顶插入新的元素。 Pop(*S,*e ) 初始条件:桟S已存在 操作结果:删除栈顶元素,并用e返回其值。 StackE mpty(S) 初始条件:栈s已存在 操作结果:若S为空栈,则返回1,否则返回0。 C learStack(*S) 初始条件:栈S已存在 操作结果:将栈S清空。 InStac k(char* ch ,SqStack *s) 初始条件:栈S已存在 操作结果:把字符数组从右至左压入栈中。 }ADT Stack ADT Q ueue{ 数据对象:D={ai | ai GCharSeti = 1,2, n n^O } 数据关系:Rl={i-l,ai |ai-l,aiEDti=l、2, n} 基本操作: I nitQueue(*Q) 操作结果:构造一个空队列Cb En Queue (*Q,e ) 初始条件:队列Q己经存在。 操作结果:插入元素e为Q的新的队尾元素。 DeQueu e (*Q/e) 初始条件:队列Q已经存在。 操作结果:删除Q的对头元素,并以e返回其值。 QueueEm pty (Q) 初始条件:队列Q己经存在。 操作结果:若队列Q为空栈,则返回1,否则返回0。 }ADT Qu eue 2. 详细设计(源代码) (使用c语言) #dio.h #inc b.h #defin e STACK J N IT_SIZE 10 0//存储空间初始分配量 #define STACKINCRE MENT 10//存储空间分配增量 typ edef struc t { char * base;//栈底指针 cha r* top;//栈顶指针 int stacksize ; JSqStack; typedef st ruct QNote { char data; s truct QNot e *next; }Q Note,*Queu ePtr; typed ef struct { QueueP tr front;//队头指针 Q ueuePtr re ar;//队尾指针 }LinkQueue; void InitS tack(SqSta ck *s) {//构造一个空栈 s -base=(ch ar*)malloc (STACKJNI T_SIZE*siz eof(char)); s-to p=s-base; s-sta cksize=STA CK」NIT_SI ZE; } void P ush(SqStac k *s,char e) {//插入元素e为新的栈顶元素 if(s-top -s-base=STACKJNIT _SIZE) { s -base=(ch ar*)reallo c(s-base,(s-stacks ize+STACKI NCREMENT)*sizeof(cha r)); s-〉top=s -base+s-stacksize; s-stacksize +=STACKINC REMENT; } *(s-top)=e; s-top++; } voi

文档评论(0)

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

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

1亿VIP精品文档

相关文档