美文网首页
数据结构之单向队列和双向队列python版

数据结构之单向队列和双向队列python版

作者: stay丶gold | 来源:发表于2019-08-18 19:19 被阅读0次

单向队列:队列是只允许在一端进行插入操作,在另外一段进行删除操作的线性表,队列不允许在中间部位进行操作,先进先出(First In First Out)

python代码实现单向队列如下:

# coding:utf-8

class Deque(object):
    """
    队列:先进先出(FIFO)
    """

    def __init__(self):
        self._list = []

    def put(self, item):
        """
        添加一个元素到队列
        """
        self._list.append(item)

    def get(self):
        """
        从队列取出一个元素
        """
        return self._list.pop(0)


    def is_empty(self):
        """
        判断队列是否为空
        """
        return not self._list

    def size(self):
        """
        返回队列的大小
        """
        return len(self._list)

if __name__ == '__main__':
    s = Deque()
    print(s.is_empty())
    s.put(1)
    s.put(2)
    s.put(3)
    print(s.size())
    print(s.get())
    print(s.get())
    print(s.is_empty())

双向队列:双向队列中的元素可以从两端弹出,限定插入和删除操作在表的两端进行。双向队列可以在队列任意一端入队和出队,实际由左右两个栈组成。

python代码实现双向队列如下:

# coding:utf-8

class Deque(object):
    """
    双向队列:队列两边都可以取放元素
    实际由左右两个栈组成
    """

    def __init__(self):
        self._list = []

    def put_left(self, item):
        """
        队列左边放一个元素
        """
        self._list.insert(0, item)

    def put_right(self, item):
        """
        队列右边放一个元素
        """
        self._list.append(item)

    def get_left(self):
        """
        从队列左边取出一个元素
        """
        return self._list.pop(0)

    def get_right(self):
        """
        从队列右边取出一个元素
        """
        return self._list.pop()

    def is_empty(self):
        """
        判断队列是否为空
        """
        return not self._list

    def size(self):
        """
        返回队列的大小
        """
        return len(self._list)

if __name__ == '__main__':
    s = Deque()
    print(s.is_empty())
    s.put_left(1)
    s.put_left(2)
    s.put_right(3)
    s.put_right(4)
    print(s.size())
    print(s.get_left())
    print(s.get_right())
    print(s.is_empty())

相关文章

  • 数据结构之单向队列和双向队列python版

    单向队列:队列是只允许在一端进行插入操作,在另外一段进行删除操作的线性表,队列不允许在中间部位进行操作,先进先出(...

  • 数据结构

    数据结构 队列&栈&链表&集合&hash表&树&图 队列 先进先出 栈 先进后出 链表 单向链表 双向链表 循环链...

  • 2017.5.25

    lua学习总结:数据结构: 使用Lua实现链表(单向链表和双向链表),队列 使用Lua保存图,用table保存,每...

  • 8. Python3 中的数据结构

    Python更多的数据结构 集合(set) 堆(heap) 双向队列(double-ended queue) 在P...

  • 数据结构和算法总结

    常用数据结构: 数组,栈,队列,链表(单向链表,双端链表,双向链表),哈希表(hash table),树(二叉树,...

  • 数据结构算法之队列和双向队列

    队列 队列(Queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。允许插入的端是队尾,允许删除的...

  • 常见的数据结构

    常见的数据结构有: 数组 链表单链表、双向链表、循环链表、双向循环链表、静态链表 栈顺序栈、链式栈 队列普通队列、...

  • Python之双向队列

    Python collections模块中的deque类是一种双向队列(double-ended queue,双端...

  • php双向队列

    队列是一种线性表,按照先进先出的原则进行单向队列:只能从头进,从尾出双向队列:头尾都可以进出

  • 在Python中实现两个堆栈的队列

    在Python中实现两个堆栈的队列。数据结构了解堆栈和队列。然后用两个堆栈实现一个队列。堆栈和队列都是列表。但它们...

网友评论

      本文标题:数据结构之单向队列和双向队列python版

      本文链接:https://www.haomeiwen.com/subject/sfldsctx.html