第3章栈和队列第7讲-队列的应用-求解迷宫问题ppt课件.pptx

第3章栈和队列第7讲-队列的应用-求解迷宫问题ppt课件.pptx

ID:60845035

大小:83.87 KB

页数:12页

时间:2020-12-21

第3章栈和队列第7讲-队列的应用-求解迷宫问题ppt课件.pptx_第1页
第3章栈和队列第7讲-队列的应用-求解迷宫问题ppt课件.pptx_第2页
第3章栈和队列第7讲-队列的应用-求解迷宫问题ppt课件.pptx_第3页
第3章栈和队列第7讲-队列的应用-求解迷宫问题ppt课件.pptx_第4页
第3章栈和队列第7讲-队列的应用-求解迷宫问题ppt课件.pptx_第5页
资源描述:

《第3章栈和队列第7讲-队列的应用-求解迷宫问题ppt课件.pptx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、栈和队列都是存放多个数据的容器。通常用于存放临时数据:如果先放入的数据先处理,则使用队列。如果后放入的数据先处理,则使用栈。3.2.4用队列求解迷宫问题1/12使用一个队列qu记录走过的方块,该队列的结构如下:typedefstruct{inti,j;//方块的位置intpre//本路径中上一方块在队列中的下标}Box;//方块类型typedefstruct{Boxdata[MaxSize];intfront,rear;//队头指针和队尾指针}QuType;//定义顺序队类型这里使用的队列qu不是环形队列(因为要利用

2、出队的元素找路径),因此在出队时,不会将出队元素真正从队列中删除,因为要利用它输出路径。数据组织2/12当前方块front:当前方块在队列中的下标相邻方块1i相邻方块2i+1Qu[i].pre=frontQu[i+1].pre=front算法设计首先将入口进队。出队一个方块,考察如下:考察所有相邻可走方块3/12入口0方块方块方块方块……方块方块方块出口所有搜索过的方块都在队列中。最后通过队列找出从出口入口的一条迷宫路径。4/12012345012345intmg[M+2][N+2]=//M=4,N=4{{1,

3、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}};0:(1,1)-1入口2:(2,1)01:(1,2)03:(1,3)15:(2,3)34:(3,1)26:(3,2)47:(2,4)58:(3,3)59:(4,2)610:(4,3)811:(4,4)10出口迷宫路径:(4,4)(4,3)(3,3)(2,3)(1,3)(1,2)(1,1)5/12boolmgpath1(intxi,intyi,intxe,i

4、ntye)//搜索路径为:(xi,yi)->(xe,ye){Boxe;inti,j,di,i1,j1;QuType*qu;//定义顺序队指针quInitQueue(qu);//初始化队列que.i=xi;e.j=yi;e.pre=-1;enQueue(qu,e);//(xi,yi)进队mg[xi][yi]=-1;//将其赋值-1,以避免回过来重复搜索用队列求一条迷宫路径的算法:(xi,yi)(xe,ye)6/12while(!QueueEmpty(qu))//队不空循环{deQueue(qu,e);//出队方块ei

5、=e.i;j=e.j;if(i==xe&&j==ye)//找到了出口,输出路径{print(qu,qu->front);//调用print函数输出路径DestroyQueue(qu);//销毁队列returntrue;//找到一条路径时返回真}7/12for(di=0;di<4;di++)//循环扫描每个方位{switch(di){case0:i1=i-1;j1=j;break;case1:i1=i;j1=j+1;break;case2:i1=i+1;j1=j;break;case3:i1=i;j1=j-1;brea

6、k;}if(mg[i1][j1]==0){e.i=i1;e.j=j1;e.pre=qu->front;enQueue(qu,e);//(i1,j1)方块进队mg[i1][j1]=-1;//将其赋值-1}}}DestroyQueue(qu);//销毁队列returnfalse;}把每个可走的方块插入队列中8/12对于图3.7的迷宫,求解(1,1)(8,8)时队列qu中结果如下:下标ijpre011-111202210322143125323641473358516934710528116181224913531014

7、7111下标ijpre151412162512176313181515192616206417211618226520235522247522254523265623278524284625295726下标ijpre308627318427324728335829346729358730368331373732384832396833408835408835358730308627278524221024752222652020641717631313531010528851664144312011-19/12迷宫路

8、径如下:(1,1)(2,1)(3,1)(4,1)(5,1)(5,2)(5,3)(6,3)(6,4)(6,5)(7,5)(8,5)(8,6)(8,7)(8,8)运行结果对于图3.11的迷宫,求解结果如下:显然,这个解是最优解,即是最短路径。10/12思考题:用队列和用栈求解迷宫问题有什么不同?11/12━━本讲完━━12/12

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

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

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