Skip to content

Unsorted List Priority Queue

UnsortedListPriorityQueue (PriorityQueue)

An unsorted list priority queue is a priority queue implemented using python's list data structure that contains unsorted items

__len__(self) special

Get the total number of elements stored in the queue

>>> a_queue = UnsortedListPriorityQueue()
>>> a_queue.enqueue(1, 2)
>>> len(a_queue)
1

Returns:

Type Description
int

count of elements in queue

Source code in priority_queues/unsorted_list_priority_queue.py
def __len__(self) -> int:
    """Get the total number of elements stored in the queue

        >>> a_queue = UnsortedListPriorityQueue()
        >>> a_queue.enqueue(1, 2)
        >>> len(a_queue)
        1

    :returns: count of elements in queue
    """
    return len(self.__data_store)

dequeue(self)

Remove first element of the queue and return it

>>> a_queue = UnsortedListPriorityQueue()
>>> a_queue.enqueue(1, 2)
>>> a_queue.dequeue()
(1, 2)

Returns:

Type Description
Any

first element of queue

Source code in priority_queues/unsorted_list_priority_queue.py
def dequeue(self) -> Any:
    """Remove first element of the queue and return it

        >>> a_queue = UnsortedListPriorityQueue()
        >>> a_queue.enqueue(1, 2)
        >>> a_queue.dequeue()
        (1, 2)

    :return: first element of queue
    """
    if self.is_empty():
        raise Empty("Queue is empty")

    current_idx = 0
    current_priority = self.__priority_store[0]

    if self._minimum_priority_queue:
        for i, priority in enumerate(self.__priority_store):
            if priority < current_priority:
                current_idx = i
                current_priority = priority

    else:
        for i, priority in enumerate(self.__priority_store):
            if priority > current_priority:
                current_idx = i
                current_priority = priority

    return self.__data_store.pop(current_idx), self.__priority_store.pop(
        current_idx
    )

enqueue(self, x, priority)

Insert an element to the end of the queue

>>> a_queue = UnsortedListPriorityQueue()
>>> a_queue.enqueue(1, 2)

Parameters:

Name Type Description Default
x Any

element to add to the queue

required
priority Union[int, float]

value that determines precedence of x in relation to the rest of the elements in the queue

required
Source code in priority_queues/unsorted_list_priority_queue.py
def enqueue(self, x: Any, priority: Union[int, float]) -> None:
    """Insert an element to the end of the queue

        >>> a_queue = UnsortedListPriorityQueue()
        >>> a_queue.enqueue(1, 2)

    :param x: element to add to the queue
    :param priority: value that determines precedence of x in relation to the rest of the elements in the queue
    """
    self.__data_store.append(x)
    self.__priority_store.append(priority)

get_first(self)

Return first element of the queue without removing it

>>> a_queue = UnsortedListPriorityQueue()
>>> a_queue.enqueue(1, 2)
>>> a_queue.get_first()
(1, 2)

Returns:

Type Description
Any

first element of queue

Source code in priority_queues/unsorted_list_priority_queue.py
def get_first(self) -> Any:
    """Return first element of the queue without removing it

        >>> a_queue = UnsortedListPriorityQueue()
        >>> a_queue.enqueue(1, 2)
        >>> a_queue.get_first()
        (1, 2)

    :return: first element of queue
    """
    if self.is_empty():
        raise Empty("Queue is empty")

    current_priority = self.__priority_store[0]
    current_element_value = self.__data_store[0]

    if self._minimum_priority_queue:
        for i, priority in enumerate(self.__priority_store):
            if priority < current_priority:
                current_priority = priority
                current_element_value = self.__data_store[i]

    else:
        for i, priority in enumerate(self.__priority_store):
            if priority > current_priority:
                current_priority = priority
                current_element_value = self.__data_store[i]

    return current_element_value, current_priority

is_empty(self)

Check if queue contains no elements

>>> a_queue = UnsortedListPriorityQueue()
>>> a_queue.is_empty()
True
>>> a_queue.enqueue(1, 2)
>>> a_queue.is_empty()
False

Returns:

Type Description
bool

True if queue is empty, else False

Source code in priority_queues/unsorted_list_priority_queue.py
def is_empty(self) -> bool:
    """Check if queue contains no elements

        >>> a_queue = UnsortedListPriorityQueue()
        >>> a_queue.is_empty()
        True
        >>> a_queue.enqueue(1, 2)
        >>> a_queue.is_empty()
        False

    :return: True if queue is empty, else False
    """
    return len(self.__data_store) == 0