发布时间:2024-11-19 10:01
【简单介绍】
1.队列是一个数据集合,仅允许在列表的一端进行插入,另一端进行删除。
2.进行插入的一端称为队尾(rear),插入动作称为进队或入队。
3.进行删除队一端称为队头(front),删除动作称为出队。
4.队列队性质:先进先出
【队列队实现方式——环形队列】
相比列表形式,更充分的利用了空间
1.环形队列:当队首队尾指针front==Maxsize-1(队列大小),再前进一个位置就自动到0
即当rear到11时,下一跳是0,需要(11+1)%12==0
2.队满:(rear+1)%12==front(图6) -->需要留一个空
3.队空:front==rear(图1)
4.队首指针前进1:front=front+1%Maxsize
5.队尾指针前进1:rear=(rear+1)%Maxsize
【自造队列】——仅学习
class Queue:
#1.首先创建一个长度为100的队列
def __init__(self,size=100):
self.queue=[0 for i in range(size)]
self.size=size
self.rear=0 #队尾 入队
self.front=0 #队首 出队
#2.加入
def push(self,element):
if not self.is_filled():
self.rear=(self.rear+1)%self.size
self.queue[self.rear]=element
else:
raise IndexError("Queue is filled")
#3.删除
def pop(self):
if not self.is_empty():#当队列不空时
self.front=(self.front+1)%self.size
#返回新的front值
return self.queue[self.front]
else:
#报错
raise IndexError("Queue is empty")
#4.判断是否为空
def is_empty(self):
return self.rear==self.front
#5.队满
def is_filled(self):
return (self.rear+1)%self.size==self.front
#测试
q=Queue(5)
for i in range(5):
q.push(i)
print(q.pop())
当队列大小为5时,加入五个数会报错,队满
【了解双向队列】
1.双向队列的两端都支持进队和出队操作
2.双向队列的基本操作:
1.队首进队 2.队首出队 3.队尾进队 4.队尾出队
【队列的内置模块】
1.使用方法:from collections import deque
1.创建队列:queue = deque()
2.进队:append()
3.出队:popleft()
4.双向队列队首进队:appendleft()
5.双向队列队尾出队:pop()
2.内置队列模块,队满了前面的数将自动出队
#导入双向队列模块
from collections import deque
#q=deque()#创建一个队列
q=deque([1,2,3,4,5],5)#也可以这样写,表示1,2,3进队,第二个参数表示最大长度
#单向队列
q.append(6)#队尾进队
print(q.popleft())#队首出队
'''
#双向队列
q.appendleft(1)#队首进队
q.pop()#队尾出队
'''
输出结果:2
原因是当6进入到队列中,队列已经满了,所以1被自动出队了
这个方法可以用来做一些案列,比如打印文件的后几行,类似切片,但比切片运算快
1.创建一个txt文件
2.编写代码
from collections import deque
def tail(n):
#打开文件
with open('test.txt','r') as f:
q=deque(f,n)#f代表文件,n代表几个数
return q #返回后面n个数据
for line in tail(5):
print(line,end="")
with open()是open函数引申过来的(参数一是文件路径,参数二是文件打开方式)
r:以只读方式打开文件
w:打开一个文件只用于写入
wb:以二进制格式打开一个文件用于写入
具体的可以看这一篇博客
python中with open中参数的介绍_python-with open() as file相关参数以及常用打开方式_集贤馆趣谈的博客-CSDN博客with open() as file是由open()函数引申而来fp = open("./aa.txt", "w+")fp.write("This is a text file.")fp.close()上面是一个open()函数的例子,在用完之后必须关闭文件,否则就造成了系统资源的长期占用!with open("./aa.txt", "w+") as fp:fp.write("This is a...https://blog.csdn.net/weixin_30010987/article/details/113501324
前几行直接for循环