python 队列练习

问题描述

队列(Queue)是一个数据集合,仅允许在列表的一端进行插入,另一端进行删除。

进行插入的一端称为队尾(rear),插入动作称为进队或入队。

进行删除的一端称为队头(front),删除动作称为出队。

队列的性质:先进先出(First-in,First-out)

class Queue:
    def __init__(self, size = 10):
        self.queue = [0 for _ in range(size)]
        self.size = size
        self.rear = 0 #队尾指针
        self.front = 0 #队首指针

    def push(self, element):
        self.rear = (self.rear + 1) % self.size
        self.queue[self.rear] = element

    def pop(self):
        if not self.is_empty():
            self.front = (self.front + 1) % self.size
            return self.queue[self.front]
        else:
            return None
    def is_empty(self):
        return self.rear == self.front

    def filled(self):
        return (self.rear + 1) % self.size == self.front

Q = Queue()
Q.push(2)
print(Q.pop())

from collections import deque
q = deque()
q.append(1) #从右边加
print(q.popleft()) #从左边pop

q.appendleft(3) #从左边队首进队
print(q.pop())

U = deque([1,0,4,5,6], 5)
U.append(8) #从左边pop
print(U.popleft()) #只输出最左边的

def tail(n):  #查看最后n行
    with open('test.txt', 'r') as f:
        q = deque(f, n)    #进队后超出范围,将最开时的元素出队
        return q

with open('test.txt', 'r') as f:
    # 循环读取文件的前5行
    for i in range(30):
        line = f.readline()
        print(line, end='')

for line in tail(5):
    print(line, end='')



自建文件test.txt

adfa
fadf
fafr
fre
rfr
rfg
gt
rgwgw
rgw
grr

结果展示

2
1
3
0
adfa
fadf
fafr
fre
rfr
rfg
gt
rgwgw
rgw
grrrfg
gt
rgwgw
rgw
grr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lebrongao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值