Python实现Queue队列

通过列表的pop方法(删除一个列表元素并且将这个列表元素返回给调用者)和append(在列表后面追加一个元素)的结合,可以实现队列操作,pop(0)可以返回一个列表中的头一个元素,通过定义一个rear用来模拟尾部指针,定义一个front用来模拟头部指针,本质上这两个变量只是一个计数器,用来记录入队的元素个数和出队的元素个数,入队rear+1,出队front+1,当两者相等的时候说明队列为空了,而入队的计数减去出队的计数就得到了队列的长度或者说大小(在python中列表的长度或者大小实际上就是列表的元素个数) 

class Queue():
    def __init__(self, size):
        self.size = size
        self.rear = -1
        self.front = -1
        self.queue = []

    def enqueue(self,one):
        if self.isFull():
            raise print('queue is full')
            return
        self.queue.append(one)
        self.rear += 1
        return

    def dequeue(self,one):
        if self.isEmpty():
            raise print('queue is empty')
            return
        self.queue.pop(0)
        self.front += 1
        return

    def isFull(self):
        return self.rear-self.front == self.size

    def isEmpty(self):
        return self.rear == self.front

    def showStatus(self):
        print(self.queue)

q = Queue(10)
for i in range(10):
    q.enqueue(i)
    q.showStatus()
for i in range(10):
    q.dequeue(i)
    q.showStatus()

运行结果:

[0]
[0, 1]
[0, 1, 2]
[0, 1, 2, 3]
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4, 5]
[0, 1, 2, 3, 4, 5, 6]
[0, 1, 2, 3, 4, 5, 6, 7]
[0, 1, 2, 3, 4, 5, 6, 7, 8]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[2, 3, 4, 5, 6, 7, 8, 9]
[3, 4, 5, 6, 7, 8, 9]
[4, 5, 6, 7, 8, 9]
[5, 6, 7, 8, 9]
[6, 7, 8, 9]
[7, 8, 9]
[8, 9]
[9]
[]

python导入deque库实现队列

 建议使用这种方法来实现队列操作,毕竟都加入python库了肯定速度比我们自个写的要快。

from collections import deque
dq = deque()
dq.append(1)
dq.append(2)
print(dq)
#输出deque([1, 2])
dq.popleft()
print(dq)
#输出deque([2])
dq.popleft()
print(dq)
#输出空列表
发布了92 篇原创文章 · 获赞 15 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/zZzZzZ__/article/details/103256633