"""
Implementujte frontu pomocí spojového seznamu.
"""

class Node:
    def __init__(self, item):
        self.item = item
        self.next = None

class Queue:

    def __init__(self):
        self.__first = None
        self.__last = None

    def enqueue(self, item):
        new = Node(item)

        if self.is_empty():
            self.__first = new
        else:
            self.__last.next = new

        self.__last = new

    def dequeue(self):
        if self.is_empty():
            print("Chyba: prázdná fronta")
            return None  # chyba

        node = self.__first

        self.__first = node.next

        if self.__first is None:
            self.__last = None

        return node.item

    def is_empty(self):
        return self.__first is None


if __name__ == '__main__':

    q = Queue()

    q.enqueue(1)
    q.enqueue(2)
    print(q.dequeue())
    q.enqueue(3)
    print(q.dequeue())
    print(q.dequeue())