Advertisement
useless28

Untitled

Oct 26th, 2022
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.49 KB | None | 0 0
  1. class Node:
  2. def __init__(self, data, p):
  3. self.next: Node = None
  4. self.prev: Node = None
  5. self.data = data
  6. self.prio = p
  7.  
  8. def get_priority(self):
  9. return self.prio
  10.  
  11. def get_data(self):
  12. return self.data
  13.  
  14. def set_next(self, next):
  15. self.next = next
  16.  
  17. def set_prev(self, prev):
  18. self.prev = prev
  19.  
  20. def get_next(self):
  21. return self.next
  22.  
  23. def get_prev(self):
  24. return self.prev
  25.  
  26. class PriorityQueue:
  27. def __init__(self):
  28. self.head = None
  29. self.tail = None
  30. self.size = 0
  31.  
  32. def get_size(self):
  33. return self.size
  34.  
  35. def is_empty(self):
  36. return self.head == None
  37.  
  38. def push(self, data, p):
  39. new_element: Node = Node(data, p)
  40. probe: Node = self.head
  41.  
  42. if self.is_empty():
  43. self.head = new_element
  44. self.tail = self.head
  45.  
  46. self.size += 1
  47. return
  48.  
  49. # hledam neco s nizsi prioritou
  50. while probe.get_next() is not None:
  51. # a pokud to najdu pripojim pred nej
  52. if p >= probe.get_priority():
  53. probe.set_prev(new_element)
  54. new_element.set_next(probe)
  55.  
  56. self.size += 1
  57. return
  58.  
  59. # nenasel jsem prvek s nizsi prioritou, novy dam na konec
  60. self.tail.set_next(new_element)
  61. new_element.set_prev(self.tail)
  62. self.tail = new_element
  63.  
  64.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement