python程式設計篇之資料結構與演算法 五

2021-08-28 10:08:48 字數 2077 閱讀 4601

佇列(queue)是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。

佇列是一種先進先出的(first in first out)的線性表,簡稱fifo。允許插入的一端為隊尾,允許刪除的一端為隊頭。佇列不允許在中間部位進行操作!假設佇列是q=(a1,a2,……,an),那麼a1就是隊頭元素,而an是隊尾元素。這樣我們就可以刪除時,總是從a1開始,而插入時,總是在佇列最後。這也比較符合我們通常生活中的習慣,排在第乙個的優先出列,最後來的當然排在隊伍最後。

同棧一樣,佇列也可以用順序表或者鍊錶實現。

操作

class queue(object):

"""佇列"""

def __init__(self):

self.items =

def is_empty(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)

if __name__ == "__main__":

q = queue()

q.enqueue("hello")

q.enqueue("world")

q.enqueue("itcast")

print q.size()

print q.dequeue()

print q.dequeue()

print q.dequeue()

雙端佇列(deque,全名double-ended queue),是一種具有佇列和棧的性質的資料結構。

雙端佇列中的元素可以從兩端彈出,其限定插入和刪除操作在表的兩端進行。雙端佇列可以在佇列任意一端入隊和出隊。

實現

class deque(object):

"""雙端佇列"""

def __init__(self):

self.items =

def is_empty(self):

"""判斷佇列是否為空"""

return self.items ==

def add_front(self, item):

"""在隊頭新增元素"""

self.items.insert(0,item)

def add_rear(self, item):

"""在隊尾新增元素"""

def remove_front(self):

"""從隊頭刪除元素"""

return self.items.pop(0)

def remove_rear(self):

"""從隊尾刪除元素"""

return self.items.pop()

def size(self):

"""返回佇列大小"""

return len(self.items)

if __name__ == "__main__":

deque = deque()

deque.add_front(1)

deque.add_front(2)

deque.add_rear(3)

deque.add_rear(4)

print deque.size()

print deque.remove_front()

print deque.remove_front()

print deque.remove_rear()

print deque.remove_rear()

python程式設計篇之資料結構與演算法 七

選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理如下。首先在未排序序列中找到最小 大 元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。選擇排序的主要優點與資料移動有關。如果某...

python程式設計篇之資料結構與演算法 十一

歸併排序是採用分治法的乙個非常典型的應用。歸併排序的思想就是先遞迴分解陣列,再合併陣列。將陣列分解最小之後,然後合併兩個有序陣列,基本思路是比較兩個陣列的最前面的數,誰小就先取誰,取了後相應的指標就往後移一位。然後再比較,直至乙個陣列為空,最後把另乙個陣列的剩餘部分複製過來即可。二分分解 num l...

python程式設計篇之資料結構與演算法 十三

樹 英語 tree 是一種抽象資料型別 adt 或是實作這種抽象資料型別的資料結構,用來模擬具有樹狀結構性質的資料集合。它是由n n 1 個有限節點組成乙個具有層次關係的集合。把它叫做 樹 是因為它看起來像一棵倒掛的樹,也就是說它是根朝上,而葉朝下的。它具有以下的特點 比如說,有序樹中的分類 二叉樹...