队列
"""
环形队列
1、队首指针前进1:front = (front + 1)% maxsize
2、队尾指针前进1:rear = (rear + 1)% maxsize
3、队空条件:rear == front
4、队满条件:(rear + 1)% maxsize == front
"""
class Queue:
def __init__(self, size=100):
self.queue = [0 for _ in range(size)]
self.rear = 0
self.front = 0
self.size = size
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.")
def pop(self):
if not self.is_empty():
self.front = (self.front + 1) % self.size
return self.queue[self.front]
else:
raise IndexError("Queue is empty.")
def is_empty(self):
return self.front == self.rear
def is_filled(self):
return (self.rear + 1) % self.size == self.front
q = Queue(5)
for i in range(4):
q.push(i)
print(q.is_filled())
print(q.pop())
队列的内置模块
from collections import deque
def tail(n):
with open('text.txt', 'r') as f:
q = deque(f, n)
return q
for line in tail(5):
print(line, end='')