杭电数据结构实习报告2.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文档。上传文档
查看更多
杭电数据结构实习报告2

实 习 报 告 题目:魔王语言解释 班级: 姓名: 学号: 日期: 需求分析 写一个魔王语言的解释系统,把他的话解释成人能听懂的话。 形式(从左到右均表示解释): (1)α-β1β2...βm (2)(αβ1β2...βn)-αβnαβn-1...αβ1α 用下述两条具体规则和上述规则像是实现。设大写字母表示魔王语言的词汇;小写字母表示人的语言词汇;希腊字母表示可以用大写字母或小写字母代换的变量。魔王语言可含人的词汇。 (1)B-tAdA (2)A-sae 测试数据 B(ehnxgz)B解释成tsaedsaeezegexenehetsaedsae 若将小写字母与汉字建立下表所示对应关系,则魔王说的话是:“天上一只鹅地上一只鹅鹅追鹅赶鹅下鹅蛋鹅恨鹅天上一只鹅地上一只鹅”。 t d s a e z g x n h 天 地 上 一只 鹅 追 赶 下 蛋 恨 详细设计 typedef struct//定义栈结构体 { char *base; char *top; int stacksize; }SqStack; typedef struct QNode//定义队结构体 { char data; struct QNode *next; }QNode,*QueuePtr; typedef struct//定义队头队尾指针结构体 { QueuePtr front; QueuePtr rear; }LinkQueue; int InitStack(SqStack S); int GetTop(SqStack S,char e); int Push(SqStack S,char e); int Pop(SqStack S,char e); int InitQueue(LinkQueue Q); int EnQueue(LinkQueue Q,char e); int DeQueue(LinkQueue Q, char e); int translate(char *p,int len,SqStack S,LinkQueue Q); int main() { char str[100][100]; int i=0,d=0; int len; char *p; SqStack S; LinkQueue Q; InitStack(S); InitQueue(Q); scanf(%s,str[0]); \\输入魔王语言 p=str[i]; len=strlen(str[i]); translate(p,len,S,Q); \\调用函数进行翻译 return 0; } int translate(char *p,int len,SqStack S,LinkQueue Q) \\定义翻译子函数 { int D=0; char e,q; p=p+len-1; while(Dlen){ while(*p!=(Dlen) //自右向左进入循环 (前的入栈 { Push(S,*p); --p; D++; } if(D==len) break; while(*(S.top-1)!=)) //栈顶元素不为)的出栈入队列 { Pop(S,e); EnQueue(Q,e); } if(*(S.top-1)==)D!=len) Pop(S,e); //将)出栈 while(Q.front!=Q.rear) //如果队列中有元素则将首元素出队列入栈 { DeQueue(Q,q); //q为xita Push(S,q); break; } while(Q.front!=Q.rearD!=len) //出队列入栈 { DeQueue(Q,e); Push(S,e); Push(S,q); } if(*p==() p=p-1; } while(S.top!=S.bas

文档评论(0)

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

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

1亿VIP精品文档

相关文档