堆栈遍历求解迷宫(程序说明书)分析.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
堆栈遍历求解迷宫(程序说明书)分析

《数据结构》 课程设计 姓名 虞嘉尧 班级 信科1301 学号 程序名:迷宫求解 实验环境: Visual c++ 6.0 语言c++ 实现功能: 随机生成一个迷宫并判断此迷宫是否走得通 主要算法: 从入口出发,以右、下、上、左方向顺序试探下一坐标是否走得通,同时将可走方位保存,再进行下一步试探,用堆栈方式实现迷宫遍历。 运行界面: 实例: 主要源代码: #include iostream #include windows.h #include time.h #include stack using namespace std; typedef struct seat//坐标 { int x; int y; int di; }Seat; typedef struct _stack//节点 { Seat seat; struct _stack *next; }MyStack, Head; int m,n; int maze[30][30]; int InMaze();//初始化迷宫 int PrintMaze();//打印迷宫 void Dis(stackSeat );//走完后路径打印 void GetNext(Seat , Seat );//获取下一个坐标 void InData(Seat , Seat , Seat , Seat );//初始化位置 int NextPas(Seat , Seat , stackSeat );//判定下一个坐标是否通过 int main() { int flag = 0; stackSeat road; Seat start, end, next, cur; while(1) { InMaze(); InData(start, end, cur, next); system(cls); PrintMaze(); flag = 0; while(!road.empty()) road.pop(); while(1) { while(cur.di = 4) { ++cur.di; maze[cur.x][cur.y] = 2; if(cur.x == end.x cur.y == end.y) { cur.di = 8; road.push(cur); cout\n\n成功走出!\n\n路径:\n; stackSeat temp; Seat a; while(!road.empty()) { a = road.top(); road.pop(); temp.push(a); } Dis(temp); flag = 1; break; } GetNext(cur, next); if(NextPas(cur, next, road)) { cur = next; Sleep(500); system(cls); PrintMaze(); } } if(flag == 1) break; maze[cur.x][cur.y] = 7; if(road.empty()) { cout\n\n无法走出\n\n; flag = 1; break; } if(flag == 1) break; cur = road.top(); road.pop(); } system(pause); }

文档评论(0)

wbjsn + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档