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.
Queue Operations:
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.
Below is the implementation of the above-mentioned Queue operations using Doubly LinkedList in Python:
Python3
class Node:
def __init__( self , data):
self .data = data
self . next = None
self .prev = None
class Queue:
def __init__( self ):
self .head = None
self .last = None
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
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
def first( self ):
return self .head.data
def size( self ):
temp = self .head
count = 0
while temp is not None :
count = count + 1
temp = temp. next
return count
def isEmpty( self ):
if self .head is None :
return True
else :
return False
def printqueue( self ):
print ("queue elements are:")
temp = self .head
while temp is not None :
print (temp.data,end = " - >")
temp = temp. next
if __name__ = = '__main__' :
queue = Queue()
print ("Queue operations using doubly linked list ")
queue.enqueue( 4 )
queue.enqueue( 5 )
queue.enqueue( 6 )
queue.enqueue( 7 )
queue.printqueue()
print ("\nfirst element is ",queue.first())
print ("Size of the queue is ",queue.size())
queue.dequeue()
queue.dequeue()
print ("After applying dequeue() two times")
queue.printqueue()
print ("\nqueue is empty:",queue.isEmpty())
|
Output:
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
Time Complexity for operations:
- enqueue(): O(1)
- dequeue():O(1)
- first(): O(1)
- size(): O(N)
- isEmpty(): O(1)
- printStack():O(N)
Auxiliary Space required for operations:
- enqueue(): O(1)
- dequeue():O(1)
- first(): O(1)
- size(): O(1)
- isEmpty(): O(1)
- printStack():O(1)
Feeling lost in the world of random DSA topics, wasting time without progress? It's time for a change! Join our DSA course, where we'll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 geeks!