1 / 5
文档名称:

老鼠闯迷宫.doc

格式:doc   大小:37KB   页数:5页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

老鼠闯迷宫.doc

上传人:rjmy2261 2019/6/21 文件大小:37 KB

下载得到文件列表

老鼠闯迷宫.doc

文档介绍

文档介绍:题目:可以输入一个任意大小的迷宫数据,用非递归的方法求出一条走出迷宫的路径,并将路径输出;最好有注释、储结构、基本算法(可以使用程序流程图)、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法;问题补充:在vc下运行以下为源代码和部分注释,可以运行#include<>#include<>#defineM15#defineN15structmark//定义迷宫内点的坐标类型{intx;inty;};structElement//"恋"栈元素,嘿嘿。。{intx,y;//x行,y列intd;//d下一步的方向};typedefstructLStack//链栈{Elementelem;structLStack*next;}*PLStack;/*************栈函数****************/intInitStack(PLStack&S)//构造空栈{S=NULL;return1;}intStackEmpty(PLStackS)//判断栈是否为空{if(S==NULL)return1;elsereturn0;}intPush(PLStack&S,Elemente)//压入新数据元素{PLStackp;p=(PLStack)malloc(sizeof(LStack));p->elem=e;p->next=S;S=p;return1;}intPop(PLStack&S,Element&e)//栈顶元素出栈{PLStackp;if(!StackEmpty(S)){e=S->elem;p=S;S=S->next;free(p);return1;}elsereturn0;}/***************求迷宫路径函数***********************/voidMazePath(structmarkstart,structmarkend,intmaze[M][N],intdiradd[4][2]){inti,j,d;inta,b;Elementelem,e;PLStackS1,S2;InitStack(S1);InitStack(S2);maze[][]=2;//=;=;=-1;//开始为-1Push(S1,elem);while(!StackEmpty(S1))//栈不为空有路径可走{Pop(S1,elem);i=;j=;d=+1;//下一个方向while(d<4)//试探东南西北各个方向{a=i+diradd[d][0];b=j+diradd[d][1];if(a==&&b==&&maze[a][b]==0)//如果到了出口{=i;=j;=d;Push(S1,elem);=a;=b;=886;//方向输出为-1判断是否到了出口Push(S1,elem);printf("\n0=东1=南2=西3=北886为则走出迷宫\n\n通路为:(行坐标,列坐标,方向)\n");while(S1)//逆置序列并输出迷宫路径序列{Pop(S1,e);Push(S2,e);}wh