队列-Python 实现

Posted 宁鸣而死

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了队列-Python 实现相关的知识,希望对你有一定的参考价值。

用 Python 来实现 队列和双端队列, 直接上代码理解即可. 队列蛮好理解的, 就是模拟咱生活中的排队. 先进, 先出嘛.

"""
队列 - ADT
队列 Queue 被构造为在队尾添加元素, 队首删除元素的有序集合, FIFO

Queue(): 创建一个空队列
enqueue(itme): 入队, 将元素添加到队尾
dequeue(): 出队, 删除队首元素并返回
is_empty(): 判断队列是否为空
sise(): 返回队列中的元素个数

思路:
    用 list 作为底层, 约定, 最左端为队尾, 最右端为队首

"""

class Queue:
    def __init__(self):
        self.items = []

    def enqueue(self, item):
        """添加元素到队尾"""
        self.items.insert(0, item)

    def dequeue(self):
        """删除队首元素并返回"""
        return self.items.pop()

    def is_empty(self):
        return self.items == []

    def size(self):
        return len(self.items)


if __name__ == '__main__':
    q = Queue()

    for i in range(1,6):
        q.enqueue(i)
    print(q.size())

    print(q.dequeue())
    print(q.dequeue())

    print(q.is_empty())

Dquue - 双端队列

"""
Deque

双端队列被构造为项的集合, 可以从队首或队尾任意一段增删元素.

Deque(): 创建一个新的Deque

add_front(item): 从队首添加元素
add_rear(item): 从队尾添加元素

remove_front(item): 从队首删除元素, 并返回
remove_rear(item): 从队尾删除元素, 并返回

is_empty(): 判断队列是否空
size(): 返回队列中的项数

思路:
    用 list 作为底层架构, 并约定, 最左边为对尾, 最右侧为对首

"""


class Deque:
    def __init__(self):
        self.items = []

    def add_front(self, item):
        """队首添加元素"""
        self.items.append(item)

    def remove_front(self):
        """队首删除元素"""
        return self.items.pop()

    def add_rear(self, item):
        """队尾添加元素"""
        self.items.insert(0, item)

    def remove_rear(self):
        """删除队尾元素"""
        return self.items.pop(0)

    def is_empty(self):
        return self.items == []

    def size(self):
        return len(self.items)


if __name__ == '__main__':
    dq = Deque()

    for i in range(3):
        dq.add_front(i)
    print(dq.size())

    dq.add_rear(-1)
    print(dq.remove_front())

    print(dq.size())

以上是关于队列-Python 实现的主要内容,如果未能解决你的问题,请参考以下文章

第十一节 双端队列的概念和python代码实现

perl中的队列

Python实现简单多线程任务队列

队列-Python 实现

python的栈和队列的实现代码

python的栈和队列的实现代码