Queues
A Queue
is a Linear Data Structure that follows the principle of FIFO
or the First-In and First-Out Principle. The values can be added to the rear of the queue (Enqueue)
and the values can be removed from the front of the queue (Dequeue)
. We will use a queue queue
of fixed length 4
. The various operations that can be performed on a Queue are :
–Enqueue
: In this process, a value is put into the queue
from the rear
or the back of the queue.
<span>def</span> <span>enqueue</span><span>():</span><span>global</span> <span>queue</span><span>if</span><span>(</span><span>len</span><span>(</span><span>queue</span><span>)</span><span>==</span><span>4</span><span>):</span><span>print</span><span>(</span><span>"</span><span>Cannot perform action, queue is full</span><span>"</span><span>)</span><span>else</span><span>:</span><span>a</span> <span>=</span> <span>int</span><span>(</span><span>input</span><span>(</span><span>"</span><span>Enter value: </span><span>"</span><span>))</span><span># adds value to the end (rear) of the queue </span> <span>queue</span><span>.</span><span>append</span><span>(</span><span>a</span><span>)</span><span>print</span><span>(</span><span>f</span><span>"</span><span>{</span><span>a</span><span>}</span><span> added to rear of the queue</span><span>"</span><span>)</span><span>def</span> <span>enqueue</span><span>():</span> <span>global</span> <span>queue</span> <span>if</span><span>(</span><span>len</span><span>(</span><span>queue</span><span>)</span><span>==</span><span>4</span><span>):</span> <span>print</span><span>(</span><span>"</span><span>Cannot perform action, queue is full</span><span>"</span><span>)</span> <span>else</span><span>:</span> <span>a</span> <span>=</span> <span>int</span><span>(</span><span>input</span><span>(</span><span>"</span><span>Enter value: </span><span>"</span><span>))</span> <span># adds value to the end (rear) of the queue </span> <span>queue</span><span>.</span><span>append</span><span>(</span><span>a</span><span>)</span> <span>print</span><span>(</span><span>f</span><span>"</span><span>{</span><span>a</span><span>}</span><span> added to rear of the queue</span><span>"</span><span>)</span>def enqueue(): global queue if(len(queue)==4): print("Cannot perform action, queue is full") else: a = int(input("Enter value: ")) # adds value to the end (rear) of the queue queue.append(a) print(f"{a} added to rear of the queue")
Enter fullscreen mode Exit fullscreen mode
–Dequeue
: In this process, a value is removed
from the front of the queue
.
<span>def</span> <span>dequeue</span><span>():</span><span>global</span> <span>queue</span><span>if</span> <span>len</span><span>(</span><span>queue</span><span>)</span> <span>==</span> <span>0</span><span>:</span><span>print</span><span>(</span><span>"</span><span>Cannot perform action, queue is empty</span><span>"</span><span>)</span><span>else</span><span>:</span><span>print</span><span>(</span><span>f</span><span>"</span><span>Dequeued value: </span><span>{</span><span>queue</span><span>[</span><span>0</span><span>]</span><span>}</span><span>"</span><span>)</span><span># removes the value from the front of the queue </span> <span>queue</span><span>.</span><span>pop</span><span>(</span><span>0</span><span>)</span><span>def</span> <span>dequeue</span><span>():</span> <span>global</span> <span>queue</span> <span>if</span> <span>len</span><span>(</span><span>queue</span><span>)</span> <span>==</span> <span>0</span><span>:</span> <span>print</span><span>(</span><span>"</span><span>Cannot perform action, queue is empty</span><span>"</span><span>)</span> <span>else</span><span>:</span> <span>print</span><span>(</span><span>f</span><span>"</span><span>Dequeued value: </span><span>{</span><span>queue</span><span>[</span><span>0</span><span>]</span><span>}</span><span>"</span><span>)</span> <span># removes the value from the front of the queue </span> <span>queue</span><span>.</span><span>pop</span><span>(</span><span>0</span><span>)</span>def dequeue(): global queue if len(queue) == 0: print("Cannot perform action, queue is empty") else: print(f"Dequeued value: {queue[0]}") # removes the value from the front of the queue queue.pop(0)
Enter fullscreen mode Exit fullscreen mode
–Peek
: In this process, the value at the front
of the queue is displayed
.
<span>def</span> <span>peek</span><span>():</span><span>global</span> <span>queue</span><span>if</span> <span>len</span><span>(</span><span>queue</span><span>)</span> <span>==</span> <span>0</span><span>:</span><span>print</span><span>(</span><span>"</span><span>Queue is empty</span><span>"</span><span>)</span><span>else</span><span>:</span><span>print</span><span>(</span><span>f</span><span>"</span><span>Front value of Queue: </span><span>{</span><span>queue</span><span>[</span><span>0</span><span>]</span><span>}</span><span>"</span><span>)</span><span>def</span> <span>peek</span><span>():</span> <span>global</span> <span>queue</span> <span>if</span> <span>len</span><span>(</span><span>queue</span><span>)</span> <span>==</span> <span>0</span><span>:</span> <span>print</span><span>(</span><span>"</span><span>Queue is empty</span><span>"</span><span>)</span> <span>else</span><span>:</span> <span>print</span><span>(</span><span>f</span><span>"</span><span>Front value of Queue: </span><span>{</span><span>queue</span><span>[</span><span>0</span><span>]</span><span>}</span><span>"</span><span>)</span>def peek(): global queue if len(queue) == 0: print("Queue is empty") else: print(f"Front value of Queue: {queue[0]}")
Enter fullscreen mode Exit fullscreen mode
–Rear
: In this process, the value at the rear
of the queue is displayed
.
<span>def</span> <span>rear</span><span>():</span><span>global</span> <span>queue</span><span>if</span> <span>len</span><span>(</span><span>queue</span><span>)</span> <span>==</span> <span>0</span><span>:</span><span>print</span><span>(</span><span>"</span><span>Queue is empty</span><span>"</span><span>)</span><span>else</span><span>:</span><span>print</span><span>(</span><span>f</span><span>"</span><span>Rear value of Queue: </span><span>{</span><span>queue</span><span>[</span><span>-</span><span>1</span><span>]</span><span>}</span><span>"</span><span>)</span><span>def</span> <span>rear</span><span>():</span> <span>global</span> <span>queue</span> <span>if</span> <span>len</span><span>(</span><span>queue</span><span>)</span> <span>==</span> <span>0</span><span>:</span> <span>print</span><span>(</span><span>"</span><span>Queue is empty</span><span>"</span><span>)</span> <span>else</span><span>:</span> <span>print</span><span>(</span><span>f</span><span>"</span><span>Rear value of Queue: </span><span>{</span><span>queue</span><span>[</span><span>-</span><span>1</span><span>]</span><span>}</span><span>"</span><span>)</span>def rear(): global queue if len(queue) == 0: print("Queue is empty") else: print(f"Rear value of Queue: {queue[-1]}")
Enter fullscreen mode Exit fullscreen mode
–State_of_Queue
: This function combines
the operations is_empty()
, which tells you whether or not the queue is empty, and is_full()
, which tells you whether or not the queue is full. The function of the operation is:
<span>def</span> <span>state_of_queue</span><span>():</span><span>if</span> <span>len</span><span>(</span><span>queue</span><span>)</span> <span>==</span> <span>4</span><span>:</span><span>print</span><span>(</span><span>"</span><span>Queue is full</span><span>"</span><span>)</span><span>elif</span> <span>len</span><span>(</span><span>queue</span><span>)</span> <span>==</span> <span>0</span><span>:</span><span>print</span><span>(</span><span>"</span><span>Queue is empty</span><span>"</span><span>)</span><span>else</span><span>:</span><span>print</span><span>(</span><span>"</span><span>Queue is partially empty</span><span>"</span><span>)</span><span>def</span> <span>state_of_queue</span><span>():</span> <span>if</span> <span>len</span><span>(</span><span>queue</span><span>)</span> <span>==</span> <span>4</span><span>:</span> <span>print</span><span>(</span><span>"</span><span>Queue is full</span><span>"</span><span>)</span> <span>elif</span> <span>len</span><span>(</span><span>queue</span><span>)</span> <span>==</span> <span>0</span><span>:</span> <span>print</span><span>(</span><span>"</span><span>Queue is empty</span><span>"</span><span>)</span> <span>else</span><span>:</span> <span>print</span><span>(</span><span>"</span><span>Queue is partially empty</span><span>"</span><span>)</span>def state_of_queue(): if len(queue) == 4: print("Queue is full") elif len(queue) == 0: print("Queue is empty") else: print("Queue is partially empty")
Enter fullscreen mode Exit fullscreen mode
To simulate the functioning of a queue, the complete code is given below:
<span>import</span> <span>array</span> <span>as</span> <span>ar</span><span>## Global variables </span><span>queue</span> <span>=</span> <span>ar</span><span>.</span><span>array</span><span>(</span><span>'</span><span>i</span><span>'</span><span>,</span> <span>[])</span><span>def</span> <span>enqueue</span><span>():</span><span>global</span> <span>queue</span><span>if</span><span>(</span><span>len</span><span>(</span><span>queue</span><span>)</span><span>==</span><span>4</span><span>):</span><span>print</span><span>(</span><span>"</span><span>Cannot perform action, queue is full</span><span>"</span><span>)</span><span>else</span><span>:</span><span>a</span> <span>=</span> <span>int</span><span>(</span><span>input</span><span>(</span><span>"</span><span>Enter value: </span><span>"</span><span>))</span><span># adds value to the end (rear) of the queue </span> <span>queue</span><span>.</span><span>append</span><span>(</span><span>a</span><span>)</span><span>print</span><span>(</span><span>f</span><span>"</span><span>{</span><span>a</span><span>}</span><span> added to rear of the queue</span><span>"</span><span>)</span><span>def</span> <span>dequeue</span><span>():</span><span>global</span> <span>queue</span><span>if</span> <span>len</span><span>(</span><span>queue</span><span>)</span> <span>==</span> <span>0</span><span>:</span><span>print</span><span>(</span><span>"</span><span>Cannot perform action, queue is empty</span><span>"</span><span>)</span><span>else</span><span>:</span><span>print</span><span>(</span><span>f</span><span>"</span><span>Dequeued value: </span><span>{</span><span>queue</span><span>[</span><span>0</span><span>]</span><span>}</span><span>"</span><span>)</span><span># removes the value from the front of the queue </span> <span>queue</span><span>.</span><span>pop</span><span>(</span><span>0</span><span>)</span><span>def</span> <span>peek</span><span>():</span><span>global</span> <span>queue</span><span>if</span> <span>len</span><span>(</span><span>queue</span><span>)</span> <span>==</span> <span>0</span><span>:</span><span>print</span><span>(</span><span>"</span><span>Queue is empty</span><span>"</span><span>)</span><span>else</span><span>:</span><span>print</span><span>(</span><span>f</span><span>"</span><span>Front value of Queue: </span><span>{</span><span>queue</span><span>[</span><span>0</span><span>]</span><span>}</span><span>"</span><span>)</span><span>def</span> <span>rear</span><span>():</span><span>global</span> <span>queue</span><span>if</span> <span>len</span><span>(</span><span>queue</span><span>)</span> <span>==</span> <span>0</span><span>:</span><span>print</span><span>(</span><span>"</span><span>Queue is empty</span><span>"</span><span>)</span><span>else</span><span>:</span><span>print</span><span>(</span><span>f</span><span>"</span><span>Rear value of Queue: </span><span>{</span><span>queue</span><span>[</span><span>-</span><span>1</span><span>]</span><span>}</span><span>"</span><span>)</span><span>def</span> <span>state_of_queue</span><span>():</span><span>if</span> <span>len</span><span>(</span><span>queue</span><span>)</span> <span>==</span> <span>4</span><span>:</span><span>print</span><span>(</span><span>"</span><span>Queue is full</span><span>"</span><span>)</span><span>elif</span> <span>len</span><span>(</span><span>queue</span><span>)</span> <span>==</span> <span>0</span><span>:</span><span>print</span><span>(</span><span>"</span><span>Queue is empty</span><span>"</span><span>)</span><span>else</span><span>:</span><span>print</span><span>(</span><span>"</span><span>Queue is partially empty</span><span>"</span><span>)</span><span>## Driver Code </span><span>while</span> <span>True</span><span>:</span><span>print</span><span>(</span><span>"</span><span>1.Enqueue</span><span>\n</span><span>2.Dequeue</span><span>\n</span><span>3.Peek</span><span>\n</span><span>4.Rear</span><span>\n</span><span>5.State of Queue</span><span>\n</span><span>6.Exit</span><span>"</span><span>)</span><span>ch</span> <span>=</span> <span>int</span><span>(</span><span>input</span><span>(</span><span>"</span><span>Enter choice: </span><span>"</span><span>))</span><span>if</span> <span>ch</span> <span>==</span> <span>1</span><span>:</span><span>enqueue</span><span>()</span><span>elif</span> <span>ch</span> <span>==</span> <span>2</span><span>:</span><span>dequeue</span><span>()</span><span>elif</span> <span>ch</span> <span>==</span> <span>3</span><span>:</span><span>peek</span><span>()</span><span>elif</span> <span>ch</span> <span>==</span> <span>4</span><span>:</span><span>rear</span><span>()</span><span>elif</span> <span>ch</span> <span>==</span> <span>5</span><span>:</span><span>state_of_queue</span><span>()</span><span>else</span><span>:</span><span>break</span><span>import</span> <span>array</span> <span>as</span> <span>ar</span> <span>## Global variables </span> <span>queue</span> <span>=</span> <span>ar</span><span>.</span><span>array</span><span>(</span><span>'</span><span>i</span><span>'</span><span>,</span> <span>[])</span> <span>def</span> <span>enqueue</span><span>():</span> <span>global</span> <span>queue</span> <span>if</span><span>(</span><span>len</span><span>(</span><span>queue</span><span>)</span><span>==</span><span>4</span><span>):</span> <span>print</span><span>(</span><span>"</span><span>Cannot perform action, queue is full</span><span>"</span><span>)</span> <span>else</span><span>:</span> <span>a</span> <span>=</span> <span>int</span><span>(</span><span>input</span><span>(</span><span>"</span><span>Enter value: </span><span>"</span><span>))</span> <span># adds value to the end (rear) of the queue </span> <span>queue</span><span>.</span><span>append</span><span>(</span><span>a</span><span>)</span> <span>print</span><span>(</span><span>f</span><span>"</span><span>{</span><span>a</span><span>}</span><span> added to rear of the queue</span><span>"</span><span>)</span> <span>def</span> <span>dequeue</span><span>():</span> <span>global</span> <span>queue</span> <span>if</span> <span>len</span><span>(</span><span>queue</span><span>)</span> <span>==</span> <span>0</span><span>:</span> <span>print</span><span>(</span><span>"</span><span>Cannot perform action, queue is empty</span><span>"</span><span>)</span> <span>else</span><span>:</span> <span>print</span><span>(</span><span>f</span><span>"</span><span>Dequeued value: </span><span>{</span><span>queue</span><span>[</span><span>0</span><span>]</span><span>}</span><span>"</span><span>)</span> <span># removes the value from the front of the queue </span> <span>queue</span><span>.</span><span>pop</span><span>(</span><span>0</span><span>)</span> <span>def</span> <span>peek</span><span>():</span> <span>global</span> <span>queue</span> <span>if</span> <span>len</span><span>(</span><span>queue</span><span>)</span> <span>==</span> <span>0</span><span>:</span> <span>print</span><span>(</span><span>"</span><span>Queue is empty</span><span>"</span><span>)</span> <span>else</span><span>:</span> <span>print</span><span>(</span><span>f</span><span>"</span><span>Front value of Queue: </span><span>{</span><span>queue</span><span>[</span><span>0</span><span>]</span><span>}</span><span>"</span><span>)</span> <span>def</span> <span>rear</span><span>():</span> <span>global</span> <span>queue</span> <span>if</span> <span>len</span><span>(</span><span>queue</span><span>)</span> <span>==</span> <span>0</span><span>:</span> <span>print</span><span>(</span><span>"</span><span>Queue is empty</span><span>"</span><span>)</span> <span>else</span><span>:</span> <span>print</span><span>(</span><span>f</span><span>"</span><span>Rear value of Queue: </span><span>{</span><span>queue</span><span>[</span><span>-</span><span>1</span><span>]</span><span>}</span><span>"</span><span>)</span> <span>def</span> <span>state_of_queue</span><span>():</span> <span>if</span> <span>len</span><span>(</span><span>queue</span><span>)</span> <span>==</span> <span>4</span><span>:</span> <span>print</span><span>(</span><span>"</span><span>Queue is full</span><span>"</span><span>)</span> <span>elif</span> <span>len</span><span>(</span><span>queue</span><span>)</span> <span>==</span> <span>0</span><span>:</span> <span>print</span><span>(</span><span>"</span><span>Queue is empty</span><span>"</span><span>)</span> <span>else</span><span>:</span> <span>print</span><span>(</span><span>"</span><span>Queue is partially empty</span><span>"</span><span>)</span> <span>## Driver Code </span><span>while</span> <span>True</span><span>:</span> <span>print</span><span>(</span><span>"</span><span>1.Enqueue</span><span>\n</span><span>2.Dequeue</span><span>\n</span><span>3.Peek</span><span>\n</span><span>4.Rear</span><span>\n</span><span>5.State of Queue</span><span>\n</span><span>6.Exit</span><span>"</span><span>)</span> <span>ch</span> <span>=</span> <span>int</span><span>(</span><span>input</span><span>(</span><span>"</span><span>Enter choice: </span><span>"</span><span>))</span> <span>if</span> <span>ch</span> <span>==</span> <span>1</span><span>:</span> <span>enqueue</span><span>()</span> <span>elif</span> <span>ch</span> <span>==</span> <span>2</span><span>:</span> <span>dequeue</span><span>()</span> <span>elif</span> <span>ch</span> <span>==</span> <span>3</span><span>:</span> <span>peek</span><span>()</span> <span>elif</span> <span>ch</span> <span>==</span> <span>4</span><span>:</span> <span>rear</span><span>()</span> <span>elif</span> <span>ch</span> <span>==</span> <span>5</span><span>:</span> <span>state_of_queue</span><span>()</span> <span>else</span><span>:</span> <span>break</span>import array as ar ## Global variables queue = ar.array('i', []) def enqueue(): global queue if(len(queue)==4): print("Cannot perform action, queue is full") else: a = int(input("Enter value: ")) # adds value to the end (rear) of the queue queue.append(a) print(f"{a} added to rear of the queue") def dequeue(): global queue if len(queue) == 0: print("Cannot perform action, queue is empty") else: print(f"Dequeued value: {queue[0]}") # removes the value from the front of the queue queue.pop(0) def peek(): global queue if len(queue) == 0: print("Queue is empty") else: print(f"Front value of Queue: {queue[0]}") def rear(): global queue if len(queue) == 0: print("Queue is empty") else: print(f"Rear value of Queue: {queue[-1]}") def state_of_queue(): if len(queue) == 4: print("Queue is full") elif len(queue) == 0: print("Queue is empty") else: print("Queue is partially empty") ## Driver Code while True: print("1.Enqueue\n2.Dequeue\n3.Peek\n4.Rear\n5.State of Queue\n6.Exit") ch = int(input("Enter choice: ")) if ch == 1: enqueue() elif ch == 2: dequeue() elif ch == 3: peek() elif ch == 4: rear() elif ch == 5: state_of_queue() else: break
Enter fullscreen mode Exit fullscreen mode
Another type of queue is called as a circular queue
and can be read here
Data Structures and Algorithms Series
Introduction to Arrays
TheCSPandz ・ Apr 9
Introduction to Stacks
TheCSPandz ・ Apr 10
Introduction to Queues
TheCSPandz ・ Apr 13
#python #datastructures #algorithms
暂无评论内容