3-2队列 课件-2021-2022学年浙教版(2019)高中信息技术选修1
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
f"要等待的人数为{len(que) - (head - tail)}")
else: if flag == 1: print(f"您当前的号码为:
A{que[tail]}," f"要等待的人数为
{len(que)}") else: print(f"您当前的号码为:
A{que[tail]}," f"要等待的人数为{0}")
q[tail] = random.randint(1, 9) tail = (tail + 1) % len(q) # 元素依次出队,直至队列为空 while head != tail: print(q[head], end=" ") head = (head + 1) % len(q)
输出结果: 7 1 3 9 2
队列
队列的基本操作
·循环队列的入队和出队(标记法 flag)----银行叫号系统
que = [-1, -1, -1, -1, -1] head = 0 tail = 0 flag = 0 print("1.新到顾客(取号)") print("2.下一个顾客(叫号)") print("3.程序结束") print("请输入具体的操作编号:") x = int(input()) while x != 3:
01234
队列
队列的基本操作
·队列的入队和出队
a=["a", "b", "c", "d", "e", "f"] q = [0] * 5 head = tail = 0 # 元素依次入队 for i in range(5):
q[tail] = a[i] tail += 1 # 元素依次出队,直至队列为空 while head != tail: print(q[head], end=" ") head += 1
队列
队列的基本操作
·队列一般按顺序结构存储的,可以用数组来实现,而在Python语言中, 可以用列表实现。
数组que的元素: a1
数组que的下标: 0
·队列的链式存储结构
head tail
头节点
头节点
head
A
a2 a3 12
B
a4 a5 34
C
tail
D^
队列的基本操作
·创建 head = 0 tail = 0 que = [“”] * 5
队列
·计算队列最大长度: q.maxsize
·判断队列为空: result=q.empty() (结果空队列为True,反之为False)
·判断队列为满: result=q.full() (结果满员为True,反之为False)
·提示该任务已完成: q.task_done()
·等待队列为空,再执行其他操作: q.join()
if x == 1: if tail - head == 0 and flag == 1: print("该队列已经满员,请到其他
队伍排队,谢谢。")
else: if que[0] == -1 and tail == 0
and flag == 0: que[tail] = 1
else: que[tail] = que[tail - 1] + 1
head tail
数组que的下标: 0 1 2 3 4
队列
队列的基本操作
·入队
head tail
01234
head
tail
ABC 01234
队列
head tail
A 01234
head
tail
AB 01234
head = 0 tail = 0 que = [“”] * 5
que[tail] =“A” tail +=1
输出结果: a b c d e
队列
队列的基本操作
·循环队列
head
tail
head
CD 01234
普通队列
CDE
01234
循环队列
tail
head
CDE 01234
循环队列
tail
head
F
DE
01234
队列
tail
队列的基本操作
·循环队列的入队和出队(空闲单元法)
import random q = [0] * 6 head = tail = 0 # 元素依次入队 while head != (tail + 1) % len(q):
tail += 1 if tail == len(que):
tail = 0 flag = 1 if x == 2: if head == tail and flag == 0: print("对不起,没有等待的客户。 ") else: print(f"请A{que[head]}号客户准备 ,马上将为您办理业务。") head += 1 if head == len(que): head = 0 flag = 0 x = int(input("请输入操作编号:"))
if tail - head > 0: print(f"您当前的号码为:
A{que[tail]}," f"要等待的人数为{tail -
head}。") elif tail - head < 0: print(f"您当前的号码为:
A{que[tail]},"
队列
队列的基本操作
·循环队列的入队和出队(标记法 flag)----银行叫号系统
选修1《数据与数据结构》
第三章 字符串、队列和栈3ຫໍສະໝຸດ 2 队列队列学习目标
队列的概念与特性 队列的基本操作
队列
队列的概念和特性
·队列的概念
队列是一种先进先出的线性表,允许插入的一端称为队尾,允许删
除的一端称为队首。
队首元素
队尾元素
出队
入队
·队列的特性
(1)先进先出、后进后出 (2)有限序列性
队列是一种线性表结构,元素个数有限。队列可以为空。
que[tail] =“B” tail +=1
que[tail] =“C” tail +=1
队列的基本操作
·出队
head
tail
head
tail
ABC 01234
BC 01234
head tail
if head < tail : que[head]
=“” head +=1
head tail
C
01234
队列
队列的基本操作
·队列模块
·引用队列模块: import queue
·创建一个队列: q=queue.Queue(maxsize = 10) (maxsize设置小于0或不设置,则 队列长度无限长)
·入队列: q.put( item )
·出队列: result = q.get( )
·计算当前队列中元素个数: re_q_size = q.qsize( )