Topics

class Node:
    # Node class for storing data and the reference to the next node
    def __init__(self, data):
        self.data = data
        self.next = None
 
class Queue:
    # Queue class using linked list
    def __init__(self):
        self.front = self.rear = None
        self.size = 0
 
    def enqueue(self, data):
        new_node = Node(data)
        if self.rear is None:
            self.front = self.rear = new_node
            self.size += 1
            return
        self.rear.next = new_node
        self.rear = new_node
        self.size += 1
 
    def dequeue(self):
        if self.front is None:
            return None
        temp = self.front
        self.front = temp.next
        if self.front is None:
            self.rear = None
        self.size -= 1
        return temp.data
 
    def peek(self):
        if self.front is None:
            return None
        return self.front.data
 
    def is_empty(self):
        return self.size == 0
 
    def get_size(self):
        return self.size
 

Here, weā€™re using a Node class to create nodes and linking them together to form a queue.