- 1、本文档共3页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 2023年通用技术会考知识点归纳 .pdf
- 小学生数学趣味知识竞赛试题 .pdf
- 百科知识竞赛题目 .pdf
- 2022年-2023年安全员之A证(企业负责人)通关考试题库带答案解析.pdf
- 2020年注册岩土工程师基础考试题及答案 .pdf
- 2021年度全国大学生网络安全知识竞赛题库及答案(共70题) .pdf
- 2023年财务管理和相关知识点总结 .pdf
- 2023年河北省中考物理学业水平测试试卷附解析 .pdf
- 2023年版(广东)非高危行业生产经营单位主要负责人及管理能力考试内部培 精品.pdf
- 通用技术Ⅰ学业水平测试训练题 .pdf
- 2025-2030年中国采暖散热器行业十三五规划及发展前景分析报告.docx
- 2025-2030年中国软体移动沼气项目可行性研究报告.docx
- 2025-2030年中国辐照加速器行业运行态势与发展策略分析报告.docx
- 2025-2030年中国金属轧机用轧辊行业市场竞争策略及发展趋势分析报告.docx
- 2025-2030年中国钐钴磁性材料产业运营状况及发展趋势分析报告.docx
- 2025-2030年中国钢材轧延行业运营态势与发展风险分析报告.docx
- 2025-2030年中国硫酸钡行业发展现状及前景趋势分析报告.docx
- 2025-2030年中国碳化纤维行业发展现状规划分析报告.docx
- 2025-2030年中国碱性锌锰电池市场十三五规划及投资战略研究报告.docx
- 国家开放大学2185电子商务法律与法规2014年01月期末笔试真题及答案.pdf
文档评论(0)