数据结构队列及其应用幻灯片.ppt
《数据结构队列及其应用幻灯片.ppt》由会员分享,可在线阅读,更多相关《数据结构队列及其应用幻灯片.ppt(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据结构队列及其应用第1页,共29页,编辑于2022年,星期六队列队列 所谓队列所谓队列所谓队列所谓队列,就是允许在一端进行插入就是允许在一端进行插入就是允许在一端进行插入就是允许在一端进行插入,在另一端进行删除的线在另一端进行删除的线在另一端进行删除的线在另一端进行删除的线性表。允许插入的一端称为队尾。性表。允许插入的一端称为队尾。性表。允许插入的一端称为队尾。性表。允许插入的一端称为队尾。队列是一种先进先出队列是一种先进先出队列是一种先进先出队列是一种先进先出(FIFO)(FIFO)的线性表的线性表的线性表的线性表 队列的顺序存储结构和链式存储结构队列的顺序存储结构和链式存储结构队列的顺序
2、存储结构和链式存储结构队列的顺序存储结构和链式存储结构 队列必须构造成循环队列的形式队列必须构造成循环队列的形式队列必须构造成循环队列的形式队列必须构造成循环队列的形式,否则会出现否则会出现否则会出现否则会出现“假溢出假溢出假溢出假溢出”#definemaxsize#definemaxsize队列最大容量;队列最大容量;队列最大容量;队列最大容量;structlinestructlineintamaxsize-1;intamaxsize-1;intrear,front;/frontintrear,front;/front队头队头队头队头;rear;rear队尾队尾队尾队尾第2页,共29页,编辑
3、于2022年,星期六队列操作队列操作 举例举例举例举例食堂排队食堂排队食堂排队食堂排队排队买票排队买票排队买票排队买票吸管里的饮料吸管里的饮料吸管里的饮料吸管里的饮料作用:维持顺序作用:维持顺序作用:维持顺序作用:维持顺序数组实现:元素数组实现:元素数组实现:元素数组实现:元素a0.maxn-1a0.maxn-1,队首,队首,队首,队首frontfront,队尾,队尾,队尾,队尾rearrear 入队:入队:入队:入队:rear+;arear=x;rear+;arear=x;出队:出队:出队:出队:ele=afront;front+;ele=afront;front+;队空条件:队空条件:队空
4、条件:队空条件:frontrearfrontrear 问题:出队的元素还在数组里,不是很浪费吗?问题:出队的元素还在数组里,不是很浪费吗?问题:出队的元素还在数组里,不是很浪费吗?问题:出队的元素还在数组里,不是很浪费吗?循环队列循环队列循环队列循环队列 把队列看成环行的,则把队列看成环行的,则把队列看成环行的,则把队列看成环行的,则 入队:入队:入队:入队:rear=(rear+1)%maxn;rear=(rear+1)%maxn;不定义为不定义为不定义为不定义为a1.maxna1.maxn的原因的原因的原因的原因 出队:出队:出队:出队:front=(front+1)%maxn;front
5、=(front+1)%maxn;可能存在队满的情况:条件也是可能存在队满的情况:条件也是可能存在队满的情况:条件也是可能存在队满的情况:条件也是front rearfront rear第3页,共29页,编辑于2022年,星期六用队列实现图的宽度优先搜索算法用队列实现图的宽度优先搜索算法我们要对图进行分层次遍历我们要对图进行分层次遍历,遍历的序列为遍历的序列为1,2,7,宽度优先搜索算法遍历序列图宽度优先搜索算法遍历序列图第4页,共29页,编辑于2022年,星期六分析分析 要对图进行按层次遍历,我们可采用逐层标号法进行。要对图进行按层次遍历,我们可采用逐层标号法进行。方法如下:方法如下:第一步:
6、将初始点放入队列,并将该点设置为已标号的点。第一步:将初始点放入队列,并将该点设置为已标号的点。第一步:将初始点放入队列,并将该点设置为已标号的点。第一步:将初始点放入队列,并将该点设置为已标号的点。第二步:从队列中取出已标号而未检查的点,访问该点的所第二步:从队列中取出已标号而未检查的点,访问该点的所第二步:从队列中取出已标号而未检查的点,访问该点的所第二步:从队列中取出已标号而未检查的点,访问该点的所有邻接顶点,放入队列,并进行标号,该顶点为已检查的点。有邻接顶点,放入队列,并进行标号,该顶点为已检查的点。有邻接顶点,放入队列,并进行标号,该顶点为已检查的点。有邻接顶点,放入队列,并进行标
7、号,该顶点为已检查的点。第三步:检查队列中是否还有未标号的点,若有,转第二第三步:检查队列中是否还有未标号的点,若有,转第二第三步:检查队列中是否还有未标号的点,若有,转第二第三步:检查队列中是否还有未标号的点,若有,转第二步,否则,图便历完毕,算法终止。步,否则,图便历完毕,算法终止。步,否则,图便历完毕,算法终止。步,否则,图便历完毕,算法终止。第5页,共29页,编辑于2022年,星期六void bfs(v);/void bfs(v);/从从从从v v开始宽度有先遍历图开始宽度有先遍历图开始宽度有先遍历图开始宽度有先遍历图 inicycque(q);/inicycque(q);/初始化队列
8、初始化队列初始化队列初始化队列q qq.encycque(v);vistedv:=true;/q.encycque(v);vistedv:=true;/初始点初始点初始点初始点v v放入队列放入队列放入队列放入队列,并标号并标号并标号并标号while(!q.empty)/while(!q.empty)/直到队列不为空直到队列不为空直到队列不为空直到队列不为空while(vwhile(v的邻接顶点存在的邻接顶点存在的邻接顶点存在的邻接顶点存在)q.encycque(vq.encycque(v的邻接顶点的邻接顶点的邻接顶点的邻接顶点););vistedvvistedv的邻接顶点的邻接顶点的邻接顶点
9、的邻接顶点:=true;:=true;q.dlcycque(v);q.dlcycque(v);第6页,共29页,编辑于2022年,星期六 已知队列已知队列已知队列已知队列(13,2,11,34,41,77,5,7,18,26,15),(13,2,11,34,41,77,5,7,18,26,15),第一个进入队第一个进入队第一个进入队第一个进入队列的元素是列的元素是列的元素是列的元素是13,13,则第五个出队列的元素是则第五个出队列的元素是则第五个出队列的元素是则第五个出队列的元素是()()。(NOIP9)(NOIP9)A)5B)41C)77D)13E)18A)5B)41C)77D)13E)18
10、 设栈设栈设栈设栈S S和队列和队列和队列和队列QQ的初始状态为空的初始状态为空的初始状态为空的初始状态为空,元素元素元素元素e1,e2,e3,e4,e5e1,e2,e3,e4,e5,e6,e6依次通过栈依次通过栈依次通过栈依次通过栈S,S,一个元素出栈后即进入队列一个元素出栈后即进入队列一个元素出栈后即进入队列一个元素出栈后即进入队列Q,Q,若出队的顺序若出队的顺序若出队的顺序若出队的顺序为为为为e2,e4,e3,e6,e5,e1,e2,e4,e3,e6,e5,e1,则栈则栈则栈则栈S S的容量至少应该为的容量至少应该为的容量至少应该为的容量至少应该为()()。(NOIP8)(NOIP8)A
11、)2B)3C)4D)5A)2B)3C)4D)5队列练习试题队列练习试题第7页,共29页,编辑于2022年,星期六【培训试题】细胞统计【培训试题】细胞统计1611DescriptionDescription:一矩形阵列由数字:一矩形阵列由数字:一矩形阵列由数字:一矩形阵列由数字0 0到到到到9 9组成组成组成组成,数字数字数字数字1 1到到到到9 9代表细胞代表细胞代表细胞代表细胞,细胞的细胞的细胞的细胞的定义为沿细胞数字上下左右还是细胞数字则为同一细胞定义为沿细胞数字上下左右还是细胞数字则为同一细胞定义为沿细胞数字上下左右还是细胞数字则为同一细胞定义为沿细胞数字上下左右还是细胞数字则为同一细胞
12、,求给定矩形阵列求给定矩形阵列求给定矩形阵列求给定矩形阵列的细胞个数。的细胞个数。的细胞个数。的细胞个数。InputInput:第一行为整数:第一行为整数:第一行为整数:第一行为整数m,n(m=100,n=100m,n(m=100,n=100分别表示分别表示分别表示分别表示mm行和行和行和行和n n列列列列),以下为一个以下为一个以下为一个以下为一个mxnmxn的矩阵的矩阵的矩阵的矩阵 OutputOutput:细胞的个数:细胞的个数:细胞的个数:细胞的个数0 02345234500000067671 10 0345634560 05 500002 20 0456456000067167100
13、000000000000008989第8页,共29页,编辑于2022年,星期六算法步骤:算法步骤:u u1 1 1 1、读入、读入、读入、读入m*nm*nm*nm*n矩阵矩阵矩阵矩阵,将其转换为将其转换为将其转换为将其转换为0 0 0 0、1 1 1 1矩阵存入矩阵存入矩阵存入矩阵存入picpicpicpic数组中;数组中;数组中;数组中;u u2 2 2 2、沿、沿、沿、沿picpicpicpic数组矩阵从上到下数组矩阵从上到下数组矩阵从上到下数组矩阵从上到下,从左到右从左到右从左到右从左到右,找到遇到的第一个细胞;将细找到遇到的第一个细胞;将细找到遇到的第一个细胞;将细找到遇到的第一个细胞
14、;将细胞的位置入队胞的位置入队胞的位置入队胞的位置入队h,h,h,h,并沿其上、下、左、右四个方向搜索并沿其上、下、左、右四个方向搜索并沿其上、下、左、右四个方向搜索并沿其上、下、左、右四个方向搜索,如果遇到细胞如果遇到细胞如果遇到细胞如果遇到细胞(picij=1)(picij=1)(picij=1)(picij=1)则将其位置入队则将其位置入队则将其位置入队则将其位置入队,入队后的位置入队后的位置入队后的位置入队后的位置picijpicijpicijpicij数组置为数组置为数组置为数组置为0 0 0 0;u u3 3 3 3、将、将、将、将h h h h队的队头出队队的队头出队队的队头出队
15、队的队头出队,沿其上、下、左、右四个方向上搜索沿其上、下、左、右四个方向上搜索沿其上、下、左、右四个方向上搜索沿其上、下、左、右四个方向上搜索,如如如如果遇到细胞则将其位置入队果遇到细胞则将其位置入队果遇到细胞则将其位置入队果遇到细胞则将其位置入队,入队后的位置入队后的位置入队后的位置入队后的位置picpicpicpic数组置为数组置为数组置为数组置为0 0 0 0;u u4 4 4 4、重复、重复、重复、重复3,3,3,3,直至直至直至直至h h h h队空为止队空为止队空为止队空为止,则此时找出了一个细胞;则此时找出了一个细胞;则此时找出了一个细胞;则此时找出了一个细胞;u u5 5 5
16、5、重复、重复、重复、重复2,2,2,2,直至矩阵找不到细胞;直至矩阵找不到细胞;直至矩阵找不到细胞;直至矩阵找不到细胞;u u6 6 6 6、输出找到的细胞数。、输出找到的细胞数。、输出找到的细胞数。、输出找到的细胞数。第9页,共29页,编辑于2022年,星期六void work(int x,int y)void work(int x,int y)int first,last,i,h,ll;int first,last,i,h,ll;first=1;last=1;total+;hang1=x;lie1=y;first=1;last=1;total+;hang1=x;lie1=y;while(
17、firstlast)while(firstlast)for(i=0;i4;i+)for(i=0;i0&h0&ll0&h0&ll=n&ahll)last+;last+;hanglast=h;lielast=ll;/hanglast=h;lielast=ll;/入队入队入队入队 ahll=false;ahll=false;first+;/first+;/出队出队出队出队 int main()int main()init();init();for(i=1;i=m;i+)for(i=1;i=m;i+)for(j=1;j=n;j+)if(aij)work(i,j);for(j=1;j=n;j+)if(a
18、ij)work(i,j);couttotalendl;couttotal1(m,n1且且且且m,n15)m,n15)。OutputOutput输出所有可能路路径条数,如果没有一条可行的路则输出。输出所有可能路路径条数,如果没有一条可行的路则输出。输出所有可能路路径条数,如果没有一条可行的路则输出。输出所有可能路路径条数,如果没有一条可行的路则输出。SampleInputSampleInput5656 100101100101 111111111111 001110001110 111110111110 111011111011 1111 5656SampleOutputSampleOutput
19、:1212 第11页,共29页,编辑于2022年,星期六【模拟试题】最少步数【模拟试题】最少步数1800【问问问问题题题题描描描描述述述述】:在在在在各各各各种种种种棋棋棋棋中中中中,棋棋棋棋子子子子的的的的走走走走法法法法总总总总是是是是一一一一定定定定的的的的,如如如如中中中中国国国国象象象象棋棋棋棋中中中中马马马马走走走走“日日日日”。有有有有一一一一位位位位小小小小学学学学生生生生就就就就想想想想如如如如果果果果马马马马能能能能有有有有两两两两种种种种走走走走法法法法将将将将增增增增加加加加其其其其趣趣趣趣味味味味性性性性,因因因因此此此此,他他他他规规规规定定定定马马马马既既既既能能
20、能能按按按按“日日日日”走走走走,也也也也能能能能如如如如象象象象一一一一样样样样走走走走“田田田田”字字字字。他他他他的的的的同同同同桌桌桌桌平平平平时时时时喜喜喜喜欢欢欢欢下下下下围围围围棋棋棋棋,知知知知道道道道这这这这件件件件事事事事后后后后觉觉觉觉得得得得很很很很有有有有趣趣趣趣,就就就就想想想想试试试试一一一一试试试试,在在在在一一一一个个个个(100*100100*100)的的的的围围围围棋棋棋棋盘盘盘盘上上上上任任任任选选选选两两两两点点点点A A、B B,A A点点点点放放放放上上上上黑黑黑黑子子子子,B B点点点点放放放放上上上上白白白白子子子子,代代代代表表表表两两两两匹
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 队列 及其 应用 幻灯片
限制150内