网站大量收购独家精品文档,联系QQ:2885784924

2023年高考信息技术专题11 受限线性表_队列、栈 知识点梳理(选修(浙教版精品.pdf

2023年高考信息技术专题11 受限线性表_队列、栈 知识点梳理(选修(浙教版精品.pdf

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
*受限线性表* 第十一章 队列、栈 一、队列 1.队列的特性 (1)队列是一种先入先出(FIFO)的线性表。允许插入的一端称为队尾tail,允许删除的一 段称为队首head。队列中的数据元素称为队列元素。在队列中插入一个元素称为入队,从 队列中删除一个元素称为出队。 (2)队列也是一种线性表结构,元素个数是有限的。但由于队列插入、删除只能在两端执 行,操作时受限,故我们又称其为受限线性表。 (3)队列只规定了插入和删除的方式,但并未规定其存储结构,所以队列既可以用数组实 现,又可以用链表实现。 2.基于数组的队列结构 2.1创建队列 用数组创建队列时,需要创建头指针head 和尾指针tail 。这里需要特别指出两个指针的定 义:队首指针head 指向队列的第一个元素;队尾指针tail 指向队列的最后一个元素的下一 个位置。 head = 0 #队首指针 tail = 0 #队尾指针 que = []*4 #存储空间 从定义可以得到两个结论: ①队列为空的判断依据:head == tail (因为tail 指向空单元) ②队列中的元素个数:num = tail - head 2.2入队和出队操作 #入队 #出队 que[tail] = a #从队尾入队 if head != tail: #判断队列不为空 tail += 1 #队尾后移 print(que[head]) #输出队首内容,出队 que[tail] = b # 从队尾入队 head += 1 #队首后移 tail += 1 #队尾后移 2.3 “假溢出”和循环队列 由于数组本身的存储空间是固定的,在进行多次入队和出队操作后,出现如下图所示的情况: 队尾已经超出了索引值范围,无法再执行入队操作;而队首在索引值2 的位置,前面两个元 素已经出队,存储空间可以继续使用。这种状况我们称为“假溢出”。当存储空间有限时, 我们可以使用循环队列增加存储空间的利用率。 #入队 #出队 if (tail+1)%len(que)!=head: if head != tail: #判断队列不为空 que[tail] = a print(que[head]) tail=(tail+1)%len(que) head=(head+1)%len(que) 这里需要注意几点: ①循环队列中队首队尾指针的定义不变,故循环队列为空的条件为:head==tail ②由于队尾定义仍是指向空单元,故循环队列需要始终留一个位置被队尾指针使用,实际 可用空间只有len(que)-1。 ③循环队列计算存储空间:(tail-head)%len(que)。 ④循环队列满:(tail+1)%len(que)==head 或 (tail-head)%len(que)==len(que)-1 3.基于链表的队列结构 用链表创建队列时,队首指针head 和链表头指针定义相同。但由于链表存储空间不连续且 不固定,队尾指针tail 只能指向队尾节点。 #创建链表队列 item = [] head = tail = -1 #入队 item.append([data,-1]) #添加新节点 if head == -1: #判断队列是否为空 head = tail = len(item)-1 #同时更新队首队尾 else: item[tail][1]=len(item)-1 #更新前向节点指针域 tail = item[tail][1] #更新尾指针 #出队 if head != -1: print(item[head][0]) head = item[head][1] #更新队首指针 基于链表队列的几个特点: ①队列为空的判断依据:head == -1 ②空队列入队时需要同时修改队首队尾指针 ③链表不存在存储空间不足的问题,但也没有办法直接统计队列长度。可以通过链表遍 历,或创建变量在出入队时±1

文档评论(0)

. + 关注
官方认证
内容提供者

专注于职业教育考试,学历提升。

版权声明书
用户编号:8032132030000054
认证主体社旗县清显文具店
IP属地河南
统一社会信用代码/组织机构代码
92411327MA45REK87Q

1亿VIP精品文档

相关文档