迷宫求解问题的代码

迷宫求解问题的代码

ID:6739945

大小:51.00 KB

页数:7页

时间:2018-01-24

迷宫求解问题的代码_第1页
迷宫求解问题的代码_第2页
迷宫求解问题的代码_第3页
迷宫求解问题的代码_第4页
迷宫求解问题的代码_第5页
资源描述:

《迷宫求解问题的代码》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、#includeusingnamespacestd;classT//定义描述迷宫中当前位置的结构类型{public:intx;//x代表当前位置的行坐标inty;//y代表当前位置的列坐标intdir;//0:无效,1:东,2:南,3:西,4:北};classLinkNode//链表结点{friendclassStack;public:Tdata;LinkNode*next;};classStack{private:LinkNode*top;//指向第一个结点的栈顶指针pub

2、lic:Stack();//构造函数,置空栈~Stack();//析构函数voidPush(Te);//把元素data压入栈中TPop();//使栈顶元素出栈TGetPop();//取出栈顶元素voidClear();//把栈清空boolempty();//判断栈是否为空,如果为空则返回1,否则返回0};Stack::Stack()//构造函数,置空栈{top=NULL;}Stack::~Stack()//析构函数{}voidStack::Push(Te)//把元素x压入栈中{LinkNode*

3、P;P=newLinkNode;P->data=e;P->next=top;top=P;}TStack::Pop()//使栈顶元素出栈{TTemp;LinkNode*P;P=top;top=top->next;Temp=P->data;deleteP;returnTemp;}TStack::GetPop()//取出栈顶元素{returntop->data;}voidStack::Clear()//把栈清空{top=NULL;}boolStack::empty()//判断栈是否为空,如果为空则返回

4、1,否则返回0{if(top==NULL)return1;elsereturn0;}intmove[4][2]={{0,1},{1,0},{0,-1},{-1,0}};//定义当前位置移动的4个方向boolMazepath(int**maze,intm,intn);//寻找迷宫maze中从(0,0)到(m,n)的路径//到则返回true,否则返回falsevoidPrintPath(Stackp);//输出迷宫的路径voidRestore(int**maze,intm,intn);//恢复迷宫i

5、nt**GetMaze(int&m,int&n);//获取迷宫//返回存取迷宫的二维指针intmain(){intm=0,n=0;//定义迷宫的长和宽int**maze;//定义二维指针存取迷宫maze=GetMaze(m,n);//调用GetMaze(int&m,int&n)函数,得到迷宫if(Mazepath(maze,m,n))//调用Mazepath(int**maze,intm,intn)函数获取路径cout<<"迷宫路径探索成功!";elsecout<<"路径不存在!";re

6、turn0;}int**GetMaze(int&m,int&n)//返回存取迷宫的二维指针{int**maze;//定义二维指针存取迷宫inti=0,j=0;cout<<"请输入迷宫的长和宽:";inta,b;cin>>a>>b;//输入迷宫的长和宽cout<<"请输入迷宫内容:";m=a;n=b;//m,n分别代表迷宫的行数和列数maze=newint*[m+2];//申请长度等于行数加2的二级指针for(i=0;i

7、[n+2];}for(i=1;i<=m;i++)//输入迷宫的内容,0代表可通,1代表不通for(j=1;j<=n;j++)cin>>maze[i][j];for(i=0;i

8、n)的路径//到则返回true,否则返回false{Stackq,p;//定义栈p、q,分别存探索迷宫的过程和存储路径TTemp1,Temp2;intx,y,loop;Temp1.x=1;Temp1.y=1;q.Push(Temp1);//将入口位置入栈p.Push(Temp1);maze[1][1]=-1;//标志入口位置已到达过while(!q.empty())//栈q非空,则反复探索{Temp2=q.GetPop();//获取栈顶元素if(!(p.GetPop().x==q.GetPop(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。