1. 程式人生 > >Python數據結構———隊列

Python數據結構———隊列

有變 變化 items 新元素 不同 span return -i tex

隊列(Queue)

隊列也是一系列有順序的元素的集合,新元素的加入在隊列的一端,叫做“隊尾”(rear),已有元素的移除發生在隊列的另一端,叫做“隊首”(front),和棧不同的是,隊列只能在隊尾插入元素,在隊首刪除元素。最新加入的元素必須處於隊尾,在隊列停留時間最長的元素處於隊首。可以把隊列想象成在銀行前排隊的人群,排在最前面的人第一個辦理業務,新來的人只能在後面排隊,直到輪到他們為止。這是一種先進先出(FIFO,First-In-First-Out)的數據結構。

隊列有兩種主要操作:向隊列中插入新元素和刪除隊列中的元素。插入操作也叫做入隊,刪除操作也叫做出隊。入隊操作在隊尾插入新元素,出隊操作刪除隊頭的元素。

隊列的另外一項重要操作是讀取隊頭的元素。這個操作叫做peek()。該操作返回隊頭元素,但不把它從隊列中刪除。除了讀取隊頭元素,我們還想知道隊列中存儲了多少元素,可以使用size()滿足該需求。

隊列Queue的操作:

Queue() 定義一個空隊列,無參數,返回值是空隊列。

enqueue(item) 在隊列尾部加入一個數據項,參數是數據項,無返回值。 dequeue() 刪除隊列頭部的數據項,不需要參數,返回值是被刪除的數據,隊列本身有變化。 isEmpty() 檢測隊列是否為空。無參數,返回布爾值。 size() 返回隊列數據項的數量。無參數,返回一個整數。

模擬隊列

class Queue:
    ‘‘‘模擬隊列‘‘‘
    def __init__(self):
        self.items = []

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

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

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

    def size(self):
        return len(self.items)
>>> q = Queue()
>>> q.isEmpty()
True
>>> q.enqueue(dog)
>>> q.enqueue(4)
>>> q.isEmpty()
False
>>> q.size()
2
>>> q.enqueue(True)
>>> q.size()
3
>>> q.dequeue()
dog
>>> q.size()
2

Python數據結構———隊列