码迷,mamicode.com
首页 > 编程语言 > 详细

队列-Python 实现

时间:2020-03-11 01:03:10      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:list   ini   python   move   出队   --   items   itme   添加   

用 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 实现

标签:list   ini   python   move   出队   --   items   itme   添加   

原文地址:https://www.cnblogs.com/chenjieyouge/p/12459832.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!