Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Node:
- def __init__(self, data, p):
- self.next: Node = None
- self.prev: Node = None
- self.data = data
- self.prio = p
- def get_priority(self):
- return self.prio
- def get_data(self):
- return self.data
- def set_next(self, next):
- self.next = next
- def set_prev(self, prev):
- self.prev = prev
- def get_next(self):
- return self.next
- def get_prev(self):
- return self.prev
- class PriorityQueue:
- def __init__(self):
- self.head = None
- self.tail = None
- self.size = 0
- def get_size(self):
- return self.size
- def is_empty(self):
- return self.head == None
- def push(self, data, p):
- new_element: Node = Node(data, p)
- probe: Node = self.head
- if self.is_empty():
- self.head = new_element
- self.tail = self.head
- self.size += 1
- return
- # hledam neco s nizsi prioritou
- while probe.get_next() is not None:
- # a pokud to najdu pripojim pred nej
- if p >= probe.get_priority():
- probe.set_prev(new_element)
- new_element.set_next(probe)
- self.size += 1
- return
- # nenasel jsem prvek s nizsi prioritou, novy dam na konec
- self.tail.set_next(new_element)
- new_element.set_prev(self.tail)
- self.tail = new_element
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement