data_structures.queue.priority_queue_using_list¶
Pure Python implementations of a Fixed Priority Queue and an Element Priority Queue using Python lists.
Exceptions¶
Common base class for all non-exit exceptions. |
|
Common base class for all non-exit exceptions. |
Classes¶
Element Priority Queue is the same as Fixed Priority Queue except that the value of |
|
Tasks can be added to a Priority Queue at any time and in any order but when Tasks |
Functions¶
Module Contents¶
- exception data_structures.queue.priority_queue_using_list.OverFlowError¶
Bases:
Exception
Common base class for all non-exit exceptions.
- exception data_structures.queue.priority_queue_using_list.UnderFlowError¶
Bases:
Exception
Common base class for all non-exit exceptions.
- class data_structures.queue.priority_queue_using_list.ElementPriorityQueue¶
Element Priority Queue is the same as Fixed Priority Queue except that the value of the element itself is the priority. The rules for priorities are the same the as Fixed Priority Queue.
>>> epq = ElementPriorityQueue() >>> epq.enqueue(10) >>> epq.enqueue(70) >>> epq.enqueue(4) >>> epq.enqueue(1) >>> epq.enqueue(5) >>> epq.enqueue(7) >>> epq.enqueue(4) >>> epq.enqueue(64) >>> epq.enqueue(128) >>> print(epq) [10, 70, 4, 1, 5, 7, 4, 64, 128] >>> epq.dequeue() 1 >>> epq.dequeue() 4 >>> epq.dequeue() 4 >>> epq.dequeue() 5 >>> epq.dequeue() 7 >>> epq.dequeue() 10 >>> print(epq) [70, 64, 128] >>> epq.dequeue() 64 >>> epq.dequeue() 70 >>> epq.dequeue() 128 >>> epq.dequeue() Traceback (most recent call last): ... data_structures.queue.priority_queue_using_list.UnderFlowError: The queue is empty >>> print(epq) []
- __str__() str ¶
Prints all the elements within the Element Priority Queue
- dequeue() int ¶
Return the highest priority element in FIFO order. If the queue is empty then an under flow exception is raised.
- enqueue(data: int) None ¶
This function enters the element into the queue If the queue is full an Exception is raised saying Over Flow!
- queue = []¶
- class data_structures.queue.priority_queue_using_list.FixedPriorityQueue¶
Tasks can be added to a Priority Queue at any time and in any order but when Tasks are removed then the Task with the highest priority is removed in FIFO order. In code we will use three levels of priority with priority zero Tasks being the most urgent (high priority) and priority 2 tasks being the least urgent.
Examples >>> fpq = FixedPriorityQueue() >>> fpq.enqueue(0, 10) >>> fpq.enqueue(1, 70) >>> fpq.enqueue(0, 100) >>> fpq.enqueue(2, 1) >>> fpq.enqueue(2, 5) >>> fpq.enqueue(1, 7) >>> fpq.enqueue(2, 4) >>> fpq.enqueue(1, 64) >>> fpq.enqueue(0, 128) >>> print(fpq) Priority 0: [10, 100, 128] Priority 1: [70, 7, 64] Priority 2: [1, 5, 4] >>> fpq.dequeue() 10 >>> fpq.dequeue() 100 >>> fpq.dequeue() 128 >>> fpq.dequeue() 70 >>> fpq.dequeue() 7 >>> print(fpq) Priority 0: [] Priority 1: [64] Priority 2: [1, 5, 4] >>> fpq.dequeue() 64 >>> fpq.dequeue() 1 >>> fpq.dequeue() 5 >>> fpq.dequeue() 4 >>> fpq.dequeue() Traceback (most recent call last):
…
data_structures.queue.priority_queue_using_list.UnderFlowError: All queues are empty >>> print(fpq) Priority 0: [] Priority 1: [] Priority 2: []
- __str__() str ¶
- dequeue() int ¶
Return the highest priority element in FIFO order. If the queue is empty then an under flow exception is raised.
- enqueue(priority: int, data: int) None ¶
Add an element to a queue based on its priority. If the priority is invalid ValueError is raised. If the queue is full an OverFlowError is raised.
- queues = [[], [], []]¶
- data_structures.queue.priority_queue_using_list.element_priority_queue()¶
- data_structures.queue.priority_queue_using_list.fixed_priority_queue()¶