数据结构--迷宫求解().docVIP

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

实验报告 题目:迷宫求解 一、需求分析 1.本演示程序运用栈的结构求解迷宫。 2.实现一个以顺序表或链表做存储结构的栈类型,编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出。 3.程序执行的命令是:对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 4.迷宫的测试数据如下:左上角(1,1)为入口,右下角(3,4)为出口。 二、编码实现 1.存储类型 typedef struct { zuobiao *base; zuobiao *top; }Sqstack; 2.部分函数的伪码算法 //构造一个栈 void Initstack(Sqstack s) { s.base=(zuobiao *)malloc(100*sizeof(zuobiao)); s.top=s.base; } //入栈操作 void push(Sqstack s,zuobiao e) { (*s.top).x=e.x; (*s.top).y=e.y; s.top++; } //出栈 void pop(Sqstack s,zuobiao e) { s.top--; e.x=(*s.top).x; e.y=(*s.top).y; } //取栈顶元素 void gettop(Sqstack s,zuobiao e) { s.top--; e.x=(*s.top).x; e.y=(*s.top).y; //迷宫求解 int mgqj(int mg[6][6],Sqstack s) { zi[1]=0;zj[1]=1;//东 zi[2]=1;zj[2]=0;//南 zi[3]=0;zj[3]=-1;//西 zi[4]=-1;zj[4]=0;//北 i=1;j=1; e.x=1;e.y=1; push(s,e); mg[1][1]=-1; do { for(v=1;v=4;v++) { m=i+zi[v]; n=j+zj[v]; if(mg[m][n]==0) { mg[m][n]=-1; i=m;j=n; e.x=m;e.y=n; push(s,e); break;} else continue; } if(v==5s.top!=s.base) { pop(s,e); gettop(s,e); i=e.x;j=e.y; } } while(s.top!=s.base(i!=4||j!=4)); if(i==4j==4) return 1; else return 0; } 三、调试分析 1.由于忽略算法和程序的区别,首次运行存在许多错误 2.本次作业题目虽然算法较长,但要求清晰,易形成思路。 3.经验体会:在程序中适当加以注释,将使程序调试变得非常简便,可以加快找到程序中的疵点。编制程序时应先建立大体框架,再将各部分细化,掌握从算法到程序的转换得方法 四、测试结果 除输出整个迷宫外,还输出:(1,1)(1,2)(2,2)(3,2)(3,3)(3,4) 五、附录 带注释的源程序如下 #includestdio.h #includestdlib.h typedef struct { int x; int y; }zuobiao; typedef struct { zuobiao *base; zuobiao *top; }Sqstack; void Initstack(Sqstack s) { s.base=(zuobiao *)malloc(100*sizeof(zuobiao)); s.top=s.base; } void push(Sqstack s,zuobiao e) { (*s.top).x=e.x; (*s.top).y=e.y; s.top++; } void pop(Sqstack s,zuobiao e) { s.top--; e.x=(*s.top).x; e.y=(*s.top).y; } void gettop(Sqstack s,zuobiao e) { s.top--; e.x=(*s.top).x; e.y=(*s.top).y; } int mgqj(int mg[6][6],Sqstack s) { int i,j,v,m,n,zi[5],zj[5]; zuobiao e; zi[1]=0;zj[1]=1; zi[2]=1;zj[2]=0; zi[3]=0;zj[3]=-1; zi[4]=-1;zj[4]=0; i=1;j=1; e.x=1;e.y=1; push(s,e);

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档