资源简介 (共15张PPT)队列授课人:****队列:队列是一种先进先出的线性表,允许插入的一端称为队尾,允许删除的一端称为队首。队列的概念出队入队队首元素队尾元素队列元素:队列中的数据元素入 队:在队列中插入一个元素的过程出 队:从队列中删除一个元素的过程有限序列性:线性表结构,元素个数有限的先进先出、后进后出(FIFO)只有一个后继点只有一个前驱点一个前驱&一个后继队列的特性先进先出、后进后出(FIFO):由队列的定义可知,队列具备“先进先出、后进后出”的特点。如图所示,出队时,对首元素a1优先出队,紧接着是a2,a3,……,an-1 ,队尾元素an最后出队。a1a2a3a4a5入队队首元素队尾元素先进先出、后进后出(FIFO):由队列的定义可知,队列具备“先进先出、后进后出”的特点。如图所示,出队时,对首元素a1优先出队,紧接着是a2,a3,……,an-1 ,队尾元素an最后出队。a5a4a3a2a1出队队首元素队尾元素队列的特性已知队列(4,21,55,66,48,24,35,12,78,5)第一个进入队列的元素是4,请问第3个出队列的元素是( )A.35B.12C.55D.5练一练C队列的基本操作a1 a2 a3 a40 1 2 3队列元素数组下标队列的存储结构:队列一般按顺序结构存储,可以用数组来实现。出入队时,队首和队尾元素的位置在不断改变,因此需设置头指针head记录队首元素位置,尾指针tail队尾元素的下一个位置。初始时,head指针和tail指针均记录下标为0的位置。队列的存储结构:队列一般按顺序结构存储,可以用数组来实现。出入队时,队首和队尾元素的位置在不断改变,因此需设置头指针head记录队首元素位置,尾指针tail队尾元素的下一个位置。初始时,head指针和tail指针均记录下标为0的位置。Python中用列表模拟实现。队列的基本操作0 1 2 3队列元素数组下标head=0tail=0建队:head=0tail=0que=[""]*4队列的基本操作0 1 2 3队列元素数组下标head=0tail=0建队:head=0tail=0que=[""]*4初始状态0 1 2 30 1 2 3AA入队:que[tail] =“A”tail+=1A入队tail=1head=0ABB入队:que[tail] =“B”tail+=1tail=2head=0B入队0 1 2 3CBAque[tail] =“A”tail+=1que[tail] =“B”tail+=1que[tail] =“C”tail+=1队列的基本操作for i in [“A“, “B“, ”C“]:que[tail]=itail+=1满队列tail=3head=0为什么进入3个元素,队列就满了?每个元素进队都让tail指针+1,当tail到达最大下标时不能再增加队列中最多存储maxsize-1个元素0 1 2 3CBA初始状态tail=3head=00 1 2 3headBACtail排在队首的元素依次出队,head指针变量依次加1,直至head值等于tail值时,队列为空while len(que)!=0:que.pop(head)队列的基本操作当head=tail但不为0时,还可以有新的元素入队吗?假溢出拓展:循环队列循环队列: 将队列的队首和队尾连接起来,形成逻辑上的环状结构。当对循环队列中的元素进行入队、出队操作时,队首指针变量和队尾指针变量可以循环指向所有位置,从而有效解决队列中“有空闲位置却不能入队”的问题。为区分队空和满,会在队尾留一个数据单元,此时队列最多可放m-1个数据元素.拓展:循环队列head=tail(tail+1)%maxsize=headhead>tail:n=maxsize+tail-headhead<=tail:n=tail-head课堂小结队列一、队列的概念(先进先出的线性表……)二、队列的特性(先进先出、有限序列性)三、队列的基本操作(建队、入队、出队)同学们!下课啦! 展开更多...... 收起↑ 资源预览