电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

迷宫问题实验报告用栈解决迷宫问题VIP免费

迷宫问题实验报告用栈解决迷宫问题_第1页
1/12
迷宫问题实验报告用栈解决迷宫问题_第2页
2/12
迷宫问题实验报告用栈解决迷宫问题_第3页
3/12
数据结构实验报告 题目:用栈解决迷宫问题 一.需求分析 1. 以结构体Maze 表示迷宫,其中pos 表示该位置是否有障碍; freq 记录该位置被经过的次数;数组move 表示下一步的方向。 2. 本程序自动随机生成一个12×12 大小的迷宫,字符“H”表示有障碍,空符表示通路。 3. 迷宫的入口为左上角,出口为右下角。 4. 本程序只求出一条成功的通路。 二.概要设计 为了实现上述操作,以栈为存储结构。 本程序包含三个模块: (1) 主程序模块:实现人机交互。 (2) 迷宫生产模块:随机产生一个12×12 的迷宫。 (3) 路径查找模块:实现通路的查找。 (4) 求解迷宫中一条通路的伪代码: do{ 若当前位置可同, 则{ 将当前位置插入栈顶; 若该位置是出口位置,则结束; 否则切换当前位置的东临方块为新的当前位置; } 否则{ 若栈不空且栈顶位置尚有其他方向未被探索, 则设定新的的当前位置为沿顺时针方向旋转找到的栈顶位置的下一相邻块 若栈不空但栈顶位置的四周均不可通, 则{ 删去栈顶位置; 若栈不空,则重新测试新的栈顶位置,直至找到一个可通的相邻块或出栈至栈空。 } } } while(栈不空) 三. 详细设计 栈的设计: typedef struct { Node *base,*top; int length; }Stack; Stack *initstack(); //初 始 化 栈 void printstack(Stack *s); //打 印 栈 Status destroy(Stack *); //销毁整个栈 Status deltop(Stack *s); //出栈 Status pushelem(Stack *,ElemType ,ElemType); //进栈 1. 主程序模块: int main() { printf("随机产生一个12×12 的迷宫,X 字符表示障碍,空符表示通路:\n"); Maze a[N][N]; makemaze(a); printf("输入回车键显示路径,*字符表示路径。\n"); getchar(); findpath(a); while(1); return 0; } 2. 迷宫生产模块; void makemaze(Maze (*p)[N]) { int i,j,conter; for(i=0;ipos=0; (*(p+i)+j)->freq=0; (*(p+i)+j)->move[0]=0; (*(p+i)+j)->move[1]=0; (*(p+i)+j)->move[2]=0; (*(p+i)+j)->move[3]=0; } for(j=0;jpos='X'; (*(p+N-1)+j)->pos='X'; } for(i=1;ipos='X'; (*(p+i)+N-1)->pos='X'; } srand((int)time(NULL)); for(conter=0;conter<20;++conter) { i=rand()%(N-2); j=rand()%(N-2);...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

迷宫问题实验报告用栈解决迷宫问题

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部