實現雙端隊列


雙端隊列[double-ended queue]:

描述:

1. 雙端隊列是一個限定插入和刪除操作的數據結構,具有隊列和棧的性質。
2. 雙端隊列中的元素可以從兩端彈出,其限定插入和刪除操作在表的兩端進行。
3. 雙端隊列是指允許兩端都可以進行入隊和出隊操作的隊列,其元素的邏輯結構仍是線性結構。將隊列的兩端分別稱為前端和后端,兩端都可以入隊和出隊。

利用python的list來實現

簡潔版:

class Deque(object):
    def __init__(self):
        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()

    def is_empty(self):
        return self.__list == []

    def size(self):
        if self.__list:
            return len(self.__list)
        else:
            return None

注釋版:

class Deque(object):
    """雙端隊列"""

    def __init__(self):
        """初始化函數, 創建一個隊列[python中的空鏈表]"""
        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()

    def is_empty(self):
        """是否為空隊列"""
        return self.__list == []
        # 等價於 return not self.__list

    def size(self):
        """隊列的長度"""
        if self.__list:
            return len(self.__list)
        else:
            return None
        """注意: 空列表不能使用切片, 如果列表不為空, 返回長度, 反之返回None"""


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM