数据结构之队列

来源:互联网 发布:eastpak知乎 编辑:程序博客网 时间:2024/06/04 00:53

今天我们要聊的是 队列(Queue)

队列(Queue):

(01) 队列中数据是按照"先进先出(FIFO, First-In-First-Out)"方式进出队列的。
(02) 队列只允许在"队首"进行删除操作而在"队尾"进行插入操作

队列也是一种线性表,很形象的比喻就是像排队一样,刚来的人入队(push)要排在队尾(rear),每次出队(pop)的都是队首(front)的人。

如下图所示:(图片来源于网络)


主要的函数有:

Queue    定义一个空队列

enqueue(item)   在队列尾部添加一个数据项,参数是数据项,无返回值

dequeue(item)   删除队列头部的数据项,无参数,返回值是被删除的数据

isEmpty(item)    检测队列是否为空

size()                 返回队列数据项的数量


python 实现

class Queue:    def __init__(self):        self.items = []    def isEmpty(self):        return self.items == []    def enqueue(self, item):        self.items.insert(0,item)    def dequeue(self):        return self.items.pop()    def size(self):        return len(self.items)q=Queue()q.enqueue(4)q.enqueue('dog')q.enqueue(True)print(q.size())

注意这里 “队首” 跟 “队尾” 是相反的。

测试代码:

>>> q.size()3>>> q.isEmpty()False>>> q.enqueue(8.4)>>> q.dequeue()4>>> q.dequeue()'dog'>>> q.size()2

参考链接:

(1)http://interactivepython.org/runestone/static/pythonds/BasicDS/ImplementingaQueueinPython.html