キュー優先キューpythonコード実装

4547 ワード

背景
周知のように、普通のキューは先進的に先に出て、スタックは先進的に後に出ます.実は彼らのストレージはすべてリストや配列の中にあります.優先順位キューを呼び出し、各要素に独自の重みを持たせます.人為的に重み値の大きさを設定できます.滞留時間に応じて重み値の大きさを決定することもできる.滞在時間が長ければ長いほど優先度が高くなるのがキューです.滞在時間が短いほど優先度が高くなるのがスタックです.
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]