隊(duì)列

隊(duì)列是一種先進(jìn)先出的數(shù)據(jù)類型,它的跟蹤原理類似于在超市收銀處排隊(duì),隊(duì)列里的的第一個人首先接受服務(wù)。新的元素通過入隊(duì)的方式添加到隊(duì)列的末尾,而出隊(duì)就是將隊(duì)列的頭元素刪除。

隊(duì)列

我們可以設(shè)置一個類,用列表來存放棧中元素的信息,利用列表的append()和pop()方法可以實(shí)現(xiàn)隊(duì)列的入隊(duì)enqueue和出隊(duì)dequeue的操作,上面棧一個元素每次出去是列表的最后一個,直接用list.pop()出棧,而出隊(duì)列每次是第一個,所以要用list.pop(0)出隊(duì)列。

Python代碼實(shí)現(xiàn)

class Queue():
    """
    隊(duì)列:先進(jìn)先出
    """

    def __init__(self, max_size):
        self.max_size = max_size
        self.front = -1
        self.rear = -1
        self.queue = []

    # 入隊(duì)操作
    def enqueue(self, ele):
        if self.full():
            raise Exception("queue is full")
        else:
            self.queue.append(ele)
            self.rear = self.rear + 1

    # 出隊(duì)操作
    def dequeue(self):
        if self.empty():
            raise Exception("queue is empty")
        else:
            self.queue.pop(0)
            self.front = self.front + 1

    # 是否已滿
    def full(self):
        return self.rear - self.front + 1 == self.max_size

    # 是否為空
    def empty(self):
        return self.front == self.rear

    # 隊(duì)列大小
    def size(self):
        return len(self.queue)

    # 根據(jù)下標(biāo)獲取目標(biāo)
    def get(self, index):
        return self.queue[index]

    # 根據(jù)目標(biāo)獲取下標(biāo)
    def index(self, item):
        return self.queue.index(item)

    # 展示隊(duì)列內(nèi)容
    def showQueue(self):
        print(self.queue)


q = Queue(10)
# print(q.empty())
for i in range(8):
    q.enqueue(i)
# print(q.full())
print(q.showQueue())

for i in range(4):
    q.dequeue()
print(q.showQueue())
# print(q.size())
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容