佇列 優先順序佇列 python 程式碼實現

烏恩大俠發表於2018-12-12

背景

眾所周知,普通的佇列就是先進先出的,棧是先進後出。其實他們的儲存都是在一個列表或者陣列裡面。
所以我們引出了優先順序佇列,讓裡面的每一個元素具有了自己的權值。可以人為的設定權值的大小。也可以根據停留的時間來確定權值的大小。如果停留的時間越長,那麼優先順序越大,就是佇列。如果停留的時間越短,那麼優先順序越大,那就是棧。

import collections
import heapq


class Queue:
    def __init__(self):
        self.elements = collections.deque()

    def empty(self):
        return len(self.elements) == 0

    def put(self, x):
        self.elements.append(x)

    def get(self):
        return self.elements.popleft()


class PriorityQueue:
    def __init__(self):
        self.elements = []

    def empty(self):
        return len(self.elements) == 0

    def put(self, item, priority):
        heapq.heappush(self.elements, (priority, item))

    def get(self):
        return heapq.heappop(self.elements)[1]

相關文章