4.1《队列结构及其实现》_第1页
4.1《队列结构及其实现》_第2页
4.1《队列结构及其实现》_第3页
4.1《队列结构及其实现》_第4页
4.1《队列结构及其实现》_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

4.1队列结构及其实现高中信息技术/教科版/选择性必修1目录1.情景导入,引入新课2.体验活动,初识队列3.探究队列抽象数据类型及其应用4.用顺序存储实现队列5.用链式存储实现队列6.课堂小结1.情景导入,引入新课”利用假期时间去游览祖国各地的名读万卷书,行万里路。'胜古迹,既可以放松紧张的心情,又可以学到很多知识。在旅游风景区,排队是不可避免的现象。本节围绕“排队买票”项目展开学习,通过项目活动认识生活中的队列,学习利用抽象数据类型定义队列,编写代码实现队列的基本操作。本节主要包含“体验排队买票”和“编程实现排队买票”两个任务。2.体验活动,初识队列

任务一体验排队买票

活动1认识生活中的队列如果我们将排队买票的人抽象成一个数据元素a,那么排队买票的队列可以用图4.1.2表示。队首队尾a1a2a3……an

排队买票

任务一体验排队买票

活动1认识生活中的队列根据图4.1.2所示,分析排队买票的情况,完成以下问题。(1)购票的行为发生在队列的

,完成购票的人离开队列后,队列有什么变化?(2)新来的买票人排在队列的

购票的人增加后,队列有什么变化?填一填队首队尾队列是一种操作受限制的线性结构,只允许在表的前端(队首)进行数据元素删除操作,在表的后端(队尾)进行插入操作在队列中插入一个数据元素称为入队,从队列中删除一个数据元素称为出队。因为队列只允许在队尾插入、在队首删除,所以先进入队列的元素先从队列中删除,故队列又称为先进先出线性表。队列3.探究队列抽象数据类型及其应用

任务一体验排队买票

活动2观察排队买票(1)7:50,售票窗口前没有人排队。(2)7:55,售票窗口前有5个人(用p1,p2,p3,p4,p5表示)依次在排队。(3)8:00,开始售票,有3个人(pl,p2,p3)陆续买票离开又来了4个人(p6,p7,p8,p9)依次排入队中根据上述观察,思考并回答下面的问题。(1)最先进入队列的是

.(2)p3买完票离开后,排在队首的人是

,队列里有

个人在排队。p1p46任务一体验排队买票

活动2观察排队买票ADTQueue:Queue():创建一个空队列,返回值是一个空的队列。enQueue(item):将数据元素item添加到队尾,无返回值deQueu():从队首删除数据元素,返回队首数据元素siz():返回队列中数据元素的个数。isEmpty():判断是否为空队列,返回布尔值队列抽象数据类型任务一体验排队买票

活动2观察排队买票假设有5个人(用p1,p2p3,p4,p5表示)依次前来排队买票,完成排队买票的过程如下。请根据操作描述补全下面的代码。01.ticketLine=Queue()

#创建空队列02.ticketLine.enQueue(p1)

#p1入队03.ticketLine.enQueue(p2)

#p2入队04.

.#p3入队05.

.#p4入队06.

.#p5入队ticketLine.enQueue(p3)ticketLine.enQueue(p4)ticketLine.enQueue(p5)任务一体验排队买票

活动2观察排队买票假设有5个人(用p1,p2p3,p4,p5表示)依次前来排队买票,完成排队买票的过程如下。请根据操作描述补全下面的代码。07.ticketLine.deQueue(

)

#p1出队08.ticketLine.deQueue(

)

#p2出队09.num=ticketLine.size(

)

#统计当前排队人数10.

#p3出队11.

#p4出队12.

#p5出队13.

#查看队列是否为空ticketLine.deQueue(

)

ticketLine.deQueue(

)

ticketLine.deQueue(

)

ticketLine.deQueue(

)

4.用顺序存储实现队列

任务二编程实现排队买票

活动1用顺序存储实现队列队列抽象数据类型主要包括创建队列、入队、出队、统计队列数据元素个数、判断队列是否为空等操作接口。队列的顺序存储实现可以用Python列表数据类型来实现。(1)创建队列。创建空队列,就是建立一个空的列表,用属性items来保存队列中的数据元素。请补全下面的代码。01.classQueue:02.def__init__(self):

#创建队列03.self.items=

#空列表[]

任务二编程实现排队买票

活动1用顺序存储实现队列(2)入队。入队操作就是在列表items的最后添加一个新的数据元素item。例如,p6入队的过程如图4.1.3所示。p1p2p3p3p4p5队首原队尾新队尾根据图4.1.3所示,补全enQueue方法的实现代码。04.defenQueue(self,item):

#入队05.self.items.append(

)#队尾增加一个数据元素

p6入队item

任务二编程实现排队买票

活动1用顺序存储实现队列(3)出队。出队操作就是移除并返回列表items中的第一个数据元素。例如,p1出队的过程如图4.1.4所示。p1p2p3p3p4p5原队首队尾根据图4.1.4所示,补全deQueue方法的实现代码06.defdeQueue(self):

#出队07.returnself.items.pop(

)#移除队首元素并返回图4.1.4p1出队新队首0

任务二编程实现排队买票

活动1用顺序存储实现队列(4)统计队列数据元素个数。08.defsize(self):09.returnlen(self.items)

#返回队列的数据元素个数(5)判断队列是否为空。10.defisEmpty(self):11.returnself.items==[]

#返回队列是否为空的判断值

任务二编程实现排队买票

活动1用顺序存储实现队列队列是一种要求先进先出的数据结构,需要在表的一端插入数据元素,在另一端删除数据元素。用列表实现队列存在两种情况:一种情况是队首放在列表头;另一种情况是队首放在列表尾。两种不同的情况,在实现入队和出队的操作中也存在差别,如表所示。列表实现的不同方案

任务二编程实现排队买票

活动1用顺序存储实现队列将队列抽象数据类型的顺序存储实现代码输入到文件中,保存为queue.py,利用排队买票测试各个接口的效果。例如,小明和小梅来排队买票,小明买到票出队,统计当前队列中的排队总人数。请补全下面的代码。01.fromqueueimportQueue

#导入队列02.ticketLine=

#创建队列对象03.ticketLine.enQueue("小明")

#小明入队04.

#小梅入队05.

#小明出队06.print(ticketLine.size())

#显示当前排队总人数Queue()ticketLine.enQueue("小梅")

ticketLine.deQueue(

)

5.用链式存储实现队列

任务二编程实现排队买票

活动2用链式存储实现队列(1)创建空队列。创建空队列,也可以称为队列的初始化,将队首节点引用和队尾节点引用都指向空,如图4.1.5所示。图4.1.5队列初始化^headrear根据图4.1.5的提示,补全队列初始化代码。01.classQueue():02.def__init__(self):03.self.head=None

#队首指向空节点04.self.rear=

#队尾指向空节点None

任务二编程实现排队买票

活动2用链式存储实现队列(2)入队。入队操作就是在链表的队尾插入一个节点。例如,p5入队的过程如图4.1.6和图4.1.7所示。p1p2p3p4^rearhead队首队尾图4.1.6插入节点前p1p2p3p4rearhead队首原队尾p5^新队尾图4.1.7插入节点后

任务二编程实现排队买票

活动2用链式存储实现队列根据图4.1.6和图4.1.7的提示,补全enQueue方法的实现代码。05.defenQueue(self,item):

#将元素item加入队列,入队06.p=Node(

)#生成新节点07.ifself.head==None:

#判断队首节点是否为空08.self.head=p

#队首指向新节点09.self.rear=

#队尾指向新节点10.else:11.tp=self.rear

#获取当前队尾节点12.tp.next=p

#当前队尾指向新节点13.self.rear=

#队尾指向新节点itempp

任务二编程实现排队买票

活动2用链式存储实现队列(3)出队。出队操作就是在链表的首端删除一个节点,修改头节点引用。例如,p1出队的过程如图4.1.8所示。p1p2p3p4rearhead原队首p5^队尾新队首图4.1.8删除节点

任务二编程实现排队买票

活动2用链式存储实现队列根据图4.1.8的提示,补全deQueue方法的实现代码。14.defdeQueue(self):

#删除队首元素,出队15.ifself.head==None:

#判断队列是否为空16.returnNone

#返回空17.result=

#获取队首节点数据元素18.self.head=

#重新设置队首节点19.returnresult

#返回节点数据

任务二编程实现排队买票

活动2用链式存储实现队列(4)统计队列数据元素个数。统计队列数据元素个数,就是要遍历链表中的每一个节点,补全size方法的实现代码。20.defsize(self):

#统计队列的数据元素个数21.current=self.head

#获取队首节点22.count=

#初始化数据元素个数统计变量23.whilecurrent!=None:

#判断当前节点不为空节点24.count=

#数据元素个数增加一个25.current=current.next

#获取下一个节点26.returncount

#返回队列的数据元素个数0count+

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论