Files
2017-03-30 05:40:46 -04:00

41 lines
957 B
Python

import sys
class PriorityQueueNode(object):
def __init__(self, obj, key):
self.obj = obj
self.key = key
def __repr__(self):
return str(self.obj) + ': ' + str(self.key)
class PriorityQueue(object):
def __init__(self):
self.queue = []
def insert(self, node):
if node is not None:
self.queue.append(node)
return self.queue[-1]
return None
def extract_min(self):
if not self.queue:
return None
minimum = sys.maxsize
for index, node in enumerate(self.queue):
if node.key < minimum:
minimum = node.key
minimum_index = index
node = self.queue.pop(minimum_index)
return node.obj
def decrease_key(self, obj, new_key):
for node in self.queue:
if node.obj is obj:
node.key = new_key
return node
return None