python雙端佇列的原理分析

wyfem發表於2021-09-11

python雙端佇列的原理分析

概念

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學習指路:

本文教程操作環境:windows7系統、Python 3.9.1,DELL G3電腦。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2894/viewspace-2829642/,如需轉載,請註明出處,否則將追究法律責任。

相關文章