6.基本數據結構-雙端隊列(Deque)

一.雙端隊列(Deque)數據結構

  - 概念:deque(也稱爲雙端隊列)是與隊列相似的項的有序集合。它有兩個端部,首部和尾部,而且項在集合中保持不變。app

  - 特性:deque 特殊之處在於添加和刪除項是非限制性的。能夠在前面或後面添加新項。一樣,能夠從任一端移除現有項。在某種意義上,這種混合線性結構提供了單個數據結構中的棧和隊列的全部能力。測試

  - 注意:即便 deque 能夠擁有棧和隊列的許多特性,它不須要由那些數據結構強制的 LIFO 和 FIFO 排序。這取決於你如何持續添加和刪除操做。spa

二.Python實現Dequecode

  - Deque的抽象數據類型定義:Deque的抽象數據類型應該由如下結構和操做定義。其中元素能夠從首部或尾部的任一端添加和移除。Deque操做以下:blog

    • Deque() 建立一個空的新 deque。它不須要參數,並返回空的 deque。
    • addFront(item) 將一個新項添加到 deque 的首部。它須要 item 參數 並不返回任何內容。
    • addRear(item) 將一個新項添加到 deque 的尾部。它須要 item 參數並不返回任何內容。
    • removeFront() 從 deque 中刪除首項。它不須要參數並返回 item。deque 被修改。
    • removeRear() 從 deque 中刪除尾項。它不須要參數並返回 item。deque 被修改。
    • isEmpty() 測試 deque 是否爲空。它不須要參數,並返回布爾值。
    • size() 返回 deque 中的項數。它不須要參數,並返回一個整數。

  

class Deque:
    def __init__(self):
        self.items = []

    def isEmpty(self):
        return self.items == []

    def addFront(self, item):
        self.items.append(item)

    def addRear(self, item):
        self.items.insert(0,item)

    def removeFront(self):
        return self.items.pop()

    def removeRear(self):
        return self.items.pop(0)

    def size(self):
        return len(self.items)
相關文章
相關標籤/搜索