Python | Queue using Doubly Linked List

19 May, 2022
A Queue is a collection of objects that are inserted and removed using First in First out Principle(FIFO). Insertion is done at the back(Rear) of the Queue and elements are accessed and deleted from first(Front) location in the queue.
1. enqueue()     : Adds element to the back of Queue.
2. dequeue()     : Removes and returns the first element from the queue.
3. first()       : Returns the first element of the queue without removing it.
4. size()        : returns the number of elements in the Queue.
5. isEmpty()     : Return True if Queue is Empty else return False.
6. printqueue()  : Print all elements of the Queue.

# A complete working Python program to demonstrate all # Queue operations using doubly linked list    # Node class class Node:   # Function to initialise the node object    def __init__(self, data):        self.data = data # Assign data        self.next = None # Initialize next as null        self.prev = None # Initialize prev as null                      # Queue class contains a Node objectclass Queue:       # Function to initialize head     def __init__(self):        self.head = None        self.last=None              # Function to add an element data in the Queue    def enqueue(self, data):        if self.last is None:            self.head =Node(data)            self.last =self.head        else:            self.last.next = Node(data)            self.last.next.prev=self.last            self.last = self.last.next                                             # Function to remove first element and return the element from the queue     def dequeue(self):           if self.head is None:            return None        else:            temp= self.head.data            self.head = self.head.next            self.head.prev=None            return temp      # Function to return top element in the queue     def first(self):           return self.head.data      # Function to return the size of the queue    def size(self):           temp=self.head        count=0        while temp is not None:            count=count+1            temp=temp.next        return count              # Function to check if the queue is empty or not          def isEmpty(self):           if self.head is None:            return True        else:            return False                  # Function to print the stack     def printqueue(self):                   print("queue elements are:")        temp=self.head        while temp is not None:            print(temp.data,end="->")            temp=temp.next                  # Code execution starts here          if __name__=='__main__':    # Start with the empty queue  queue = Queue()     print("Queue operations using doubly linked list")   # Insert 4 at the end. So queue becomes 4->None    queue.enqueue(4)   # Insert 5 at the end. So queue becomes 4->5None    queue.enqueue(5)   # Insert 6 at the end. So queue becomes 4->5->6->None    queue.enqueue(6)   # Insert 7 at the end. So queue becomes 4->5->6->7->None    queue.enqueue(7)   # Print the queue   queue.printqueue()   # Print the first element   print("\nfirst element is ",queue.first())   # Print the queue size   print("Size of the queue is ",queue.size())   # remove the first element   queue.dequeue()   # remove the first element   queue.dequeue()   # first two elements are removed# Print the queue   print("After applying dequeue() two times")  queue.printqueue()   # Print True if queue is empty else False   print("\nqueue is empty:",queue.isEmpty())
Queue operations using doubly linked list
queue elements are:
4->5->6->7->
first element is  4
Size of the queue is  4
After applying dequeue() two times
queue elements are:
6->7->
queue is empty: False

Python DSA-exercises
Python LinkedList-exercises
Python-Data-Structures
Linked List
Python
Queue
Linked List
Queue
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.