溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python雙端隊列的原理是什么

發(fā)布時間:2021-04-30 11:34:40 來源:億速云 閱讀:145 作者:小新 欄目:編程語言

這篇文章主要介紹python雙端隊列的原理是什么,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

python的數(shù)據(jù)類型有哪些?

python的數(shù)據(jù)類型:1. 數(shù)字類型,包括int(整型)、long(長整型)和float(浮點型)。2.字符串,分別是str類型和unicode類型。3.布爾型,Python布爾類型也是用于邏輯運算,有兩個值:True(真)和False(假)。4.列表,列表是Python中使用最頻繁的數(shù)據(jù)類型,集合中可以放任何數(shù)據(jù)類型。5. 元組,元組用”()”標(biāo)識,內(nèi)部元素用逗號隔開。6. 字典,字典是一種鍵值對的集合。7. 集合,集合是一個無序的、不重復(fù)的數(shù)據(jù)組合。

1、概念

具有隊列和棧性質(zhì)的數(shù)據(jù)結(jié)構(gòu)。雙端隊列的要素可以從兩端彈出,限定插入和刪除操作在表的兩端進行。雙端隊列可以在隊列的任何一端進出。

2、原理

雙端隊列是一種具有隊列和棧性質(zhì)的數(shù)據(jù)結(jié)構(gòu)。雙端隊列的元素可以從兩端彈出,有限的插入和刪除操作可以在隊列的兩端進行??梢岳斫鉃殡p端隊列可以從隊列的兩端添加和刪除元素,我們可以在創(chuàng)建或?qū)嵗p端隊列時指定隊列的長度或大小。當(dāng)隊列滿了,我們可以反向刪除過期元素(從前刪除),然后在隊列的末尾添加新元素。

3、實例

# -- encoding: utf-8 --
# @time:     2021/4/18 11:49
# @Author:  jsonLiu
# @Email:    xxxxxxxxx@qq.com
# @file:  deque
# 雙端隊列
"""
- Deque()創(chuàng)建一個空的雙端隊列。它不需要參數(shù),且會返回一個空的雙端隊列。
- addFront(item)將一個元素添加到雙端隊列的前端。它接受一個元素作為參數(shù),沒有返回值
- addRear (item)將一個元素添加到雙端隊列的后端。它接受一個元素作為參數(shù),沒有返回值。
- popFront()從雙端隊列的前端移除一個元素。它不需要參數(shù),且會返回一個元素,并修改雙端隊列的內(nèi)容。
- popRear()從雙端隊列的后端移除一個元素。它不需要參數(shù),且會返回一個元素,并修改雙端隊列的內(nèi)容。
- isEmpty()檢查雙端隊列是否為空。它不需要參數(shù),且會返回一個布爾值。
- size()返回雙端隊列中元素的數(shù)目。它不需要參數(shù),且會返回一個整數(shù)。
"""
 
 
class Deque1:
    """假設(shè)雙端隊列的后端是列表位置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:
    """假設(shè)雙端隊列的前端是列表位置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雙端隊列的原理是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI