资源简介 (共15张PPT)3.2队列生活中的队列按照到达时间的先后顺序,合理地安排办事次序。这些事件对数据的处理具有排队的特性,可以使用队列来解决。出队:从队首中_______一个元素称为出队。队列是一种__________的线性表,允许插入的一端称为______,允许删除的一端称为_______。队列中的数据元素称为______________。入队:在队尾中_______一个元素称为入队;先进先出队尾队首队列元素插入删除出队入队队首元素队尾元素先进先出、后进后出一、队列的概念二.队列的特性出队入队队首元素队尾元素只有一个后继点只有一个前驱点一个前驱&一个后继特性一:特性二:有限序列性队列也是一种线性表结构,元素个数是有限的。先进先出、后进后出图1图2下列事件执行过程与队列特征不相符的是 ( )A.在汽车加油站排队加油时不允许插队B.当主机运行速度与打印机的打印速度不匹配时,为打印机设置一个打印数据缓冲区C.把书叠放成一摞,最底下的书要最后才能拿出来D.CPU分时系统可以根据用户请求,按顺序快速运行各程序段,实现多用户“同时”工作的假象练习1C解析:C选项中最底下的书是最先放入,但要最后才能拿出来,是先进后出,不符合队列先进先出的特性。队列一般按顺序结构存储的,可以用数组来实现。如图所示:数组que中存储了一个队列、共有4个元素,队首元素为a1,队尾元素为a4。a1 a2 a3 a40 1 2 3数组que的下标在入队和出队的过程中,队首元素和队尾元素在数组que中的位置在改变,因此需要设置头指针变量head和尾指针变量tail,head记录队首元素所在的位置,tail记录队尾元素的______位置。三、队列的基本操作队首元素队尾元素headtail下一个问题1:在Python语言中如何表示队列?问题2:如何描述队列入队和出队过程?活动1.建队:如:有4个字母“A”“B”“C”“D”按序入队、出队时,可以创建一个队列que,长度为5,head=0tail=0que=[""]*50 1 2 3 4数组que的下标headtail程序实现:队列为空?head==tail初始时,head=tail=0活动2.入队:que[tail]=”A” # A入队tail=tail+1 #tail=1que[tail]=”B” # B入队tail=tail+1 #tail=2que[tail]=”C” # C入队tail=tail+1 #tail=3que[tail]=”D” # D入队tail=tail+1 #tail=40 1 2 3 4数组que的下标head程序实现:队非空判断条件:(head!=tail)ABCDtail头指针head记录队首位置尾指针tail记录队尾元素的下一个位置队内元素个数=tail-headhead重大发现接收入队元素的变量:que[tail]活动3.出队:0 1 2 3 4数组que的下标head程序实现(将出队的元素存入数组s中):Dtail排在队首的元素依次出队,head指针变量依次加1;直至______________,说明全部出队,队列为空CBAs="" while head != tail :__________________ __________________ print(s)head==tails=s+que[head]head+=1判断队列为空的条件:head==tail出出出出每次出队的元素是:que[head]a=["a", "b", "c", "d", "e", "f"]q = [0] * 5head = tail = 0for i in range(5): q[tail] = a[i] tail += 1while head != tail: print(q[head], end=" ") head += 1输出结果为 :_________________练习2# 建立空队列# 元素依次入队# 元素依次出队,直至队列为空a b c d e f原顺序输出1.信息的加密:给定一个字符串S1,S2,…..Sn,按如下过程加密:取出第一个字符S1,将第二个字符S2放到字符串的末尾Sn后面,得到字符串S3…..Sn,S2;接着把S3取出,S4放到字符串的末尾S2后面,直到最后一个字母Sn被取出。这些字母按取出的顺序形成一个新的字符串,称为密串,请编写一个加密程序,输入一个字符串(长度小于等于100),输出该字符串的密串。四、队列的应用队首取数,队尾插入数(1)抽象与建模:思考:加密的过程,符合什么数据结构的特征?队列1.信息的加密:(2)设计算法:以字符串“STRING”为例①将字符串各字符依次入队,得到队列,tail值为6,head值为0。四、队列的应用②加密过程。先取出队首元素“S”,并输出,同时head值加1,记录新的队首元素“T”所在的位置。再取出队首元素“T”,并把该元素加入队尾,head值、tail值均加1。0 1 2 3 4 5 6 7 8 9 10 11headtailSTRING出出出出出出③重复操作②,直至队列为空。(3)算法实现,在划线处填入正确的语句s=input("请输入字符串:")print("加密后的串为:")que=[""]*100head=0tail=0for i in range(len(s)):_________________tail+=1print(que)while _______________: print(que[head],end="") head+=1 if head_____________________tail+=1head+=1# 建立空队列#原串入队#队列非空时,1-q[head]出队2-出队的元素加入队尾que[tail]=s[i]head!=tailque[tail]=que[head]先进先出的线性表队尾、队首的概念入队、出队的概念队列的概念建空队列\入队\出队队列的基本操作先进先出有限序列性队列的特性信息的加密……队列的应用课堂小结队列为空:head==tail队列非空:head!=tail队列元素 个数=tail-head谢谢观看! 展开更多...... 收起↑ 资源预览