数据结构编程迷宫(用栈的方法解决).doc_第1页
数据结构编程迷宫(用栈的方法解决).doc_第2页
数据结构编程迷宫(用栈的方法解决).doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include #define M 4/定义行数为4#define N 4/定义列数为4#define MaxSize 100 /定义栈最多元素个数int mgM+2N+2= /迷宫的四周要加上均为1的外框 1,1,1,1,1,1,1,0,0,0,1,1,1,0,1,0,0,1,1,0,0,0,1,1,1,1,0,0,0,1,1,1,1,1,1,1;struct int i; /当前方块的行号int j; /当前方块的列号int di; /di是下一个可走相邻方位的方位号 StackMaxSize,PathMaxSize;/定义栈和存放最短路径的数组int top=-1;/初始化栈顶int count=1;/路径数计数int min=MaxSize;/最短路径长度计数void mgpath()/求解路径为:(1,1)-(M,N)int i,j,k,di,find;top+;/初始方块进入栈口Stacktop.i=1;Stacktop.j=1;Stacktop.di=-1;mg11=-1;while (top-1)/栈不空时循环i=Stacktop.i;j=Stacktop.j;di=Stacktop.di; /取栈顶方块if (i=M & j=N)/找到了出口,输出路径 printf(%4d:,count+);for (k=0;k=top;k+)printf(%d,%d),Stackk.i,Stackk.j);if (k+1)%5=0) printf(n);/每输出5个方块后换一行printf(n);if (top+1min) /找最短路径for (k=0;k=top;k+)Pathk=Stackk;min=top+1;mgStacktop.iStacktop.j=0;/让该位置变为其他路径可走方块top-; i=Stacktop.i;j=Stacktop.j;di=Stacktop.di;find=0;while (di4 & find=0)/找(i,j)方块下一个可走方块di+;switch(di)case 0:i=Stacktop.i-1;j=Stacktop.j;break;case 1:i=Stacktop.i;j=Stacktop.j+1;break;case 2:i=Stacktop.i+1;j=Stacktop.j;break;case 3:i=Stacktop.i,j=Stacktop.j-1;break;if (mgij=0) find=1;if (find=1) /找到了一个可走的相邻方块Stacktop.di=di;/修改原栈顶元素的di值top+; /将可走相邻方块进栈Stacktop.i=i;Stacktop.j=j;Stacktop.di=-1;mgij=-1;/避免重复走到该方块,将其置为-1else /没有相邻方块可走,则退栈mgStacktop.iStacktop.j=0; /让该位置变为其他路径可走方块top-;printf(最短路径如下:n);printf(长度:%dn,min);printf(路径:);for (k=0;kmin;k+)printf(%d,%d),Pathk.i,Pathk.j);if (k+1)%5=0)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论