ITPub博客

首页 > IT职业 > IT职场 > python双端队列的原理分析

python双端队列的原理分析

IT职场 作者:wyfem 时间:2021-09-11 09:53:22 0 删除 编辑

概念

1、具有队列和栈性质的数据结构。双端队列的要素可以从两端弹出,限定插入和删除操作在表的两端进行。

双端队列可以在队列的任何一端进出。

原理

双端队列是一种具有队列和栈性质的数据结构。双端队列的元素可以从两端弹出,有限的插入和删除操作可以在队列的两端进行。

2、双端队列可以从队列的两端添加和删除元素,可以在创建或实例双端队列时指定队列的长度或大小。

当队列满了,我们可以反向删除过期元素(从前删除),然后在队列的末尾添加新元素。

实例

# -- encoding: utf-8 --
# @time:     2021/4/18 11:49
# @Author:  jsonLiu
# @Email:    xxxxxxxxx@qq.com
# @file:  deque
# 双端队列
"""
- Deque()创建一个空的双端队列。它不需要参数,且会返回一个空的双端队列。
- addFront(item)将一个元素添加到双端队列的前端。它接受一个元素作为参数,没有返回值
- addRear (item)将一个元素添加到双端队列的后端。它接受一个元素作为参数,没有返回值。
- popFront()从双端队列的前端移除一个元素。它不需要参数,且会返回一个元素,并修改双端队列的内容。
- popRear()从双端队列的后端移除一个元素。它不需要参数,且会返回一个元素,并修改双端队列的内容。
- isEmpty()检查双端队列是否为空。它不需要参数,且会返回一个布尔值。
- size()返回双端队列中元素的数目。它不需要参数,且会返回一个整数。
"""
 
 
class Deque1:
    """假设双端队列的后端是列表位置0处"""
 
    def __init__(self):
        self.__list = []
 
    def isEmpty(self):
        # return self.__list == []
        return not self.__list
 
    def size(self):
        return len(self.__list)
 
    def add_front(self, item):
        """添加到双端队列前端"""
        self.__list.append(item)
 
    def add_rear(self, item):
        """添加到双端队列后端"""
        self.__list.insert(0, item)
 
    def pop_front(self):
        """从双端队列的前端移除一个元素"""
        return self.__list.pop(len(self.__list) - 1)
        # return self.__list.pop()
 
    def pop_rear(self):
        """双端队列的后端移除一个元素"""
        return self.__list.pop(0)
 
 
class Deque2:
    """假设双端队列的前端是列表位置0处"""
 
    def __init__(self):
        self.__list = []
 
    def isEmpty(self):
        # return self.__list == []
        return not self.__list
 
    def size(self):
        return len(self.__list)
 
    def add_front(self, item):
        """添加到双端队列前端"""
        self.__list.insert(0, item)
 
    def add_rear(self, item):
        """添加到双端队列后端"""
        self.__list.append(item)
 
    def pop_front(self):
        """从双端队列的前端移除一个元素"""
        return self.__list.pop(0)
 
    def pop_rear(self):
        """双端队列的后端移除一个元素"""
        # return self.__list.pop()
        return self.__list.pop(len(self.__list) - 1)
 
 
if __name__ == '__main__':
    d = Deque2()
    # d = Deque1()
    print(d.isEmpty())  # True
    d.add_rear(4)
    d.add_rear(3)
    d.add_front(2)
    d.add_front(1)
    print(d.size())  # 4
 
    d.add_rear(5)
    print(d.pop_rear())
    print(d.pop_front())

以上就是python双端队列的原理分析,希望对大家有所帮助。更多Python学习指路:python基础教程

本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2894/viewspace-2829642/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-12-22

  • 博文量
    73
  • 访问量
    33675