SlideShare a Scribd company logo
1 of 35
Download to read offline
QUEUE
QUEUE
A queue is two ended data structure in which
items can be inserted from one end and taken out
from the other end. Therefore , the first item
inserted into queue is the first item to be taken out
from the queue. This property is called First in
First out [FIFO].
Queue Example
● A queue of people in the bank who are
trying to submit utility bills.
● A line of vehicle on the motorway toll plaza.
● Consider a shared printer in a computer
laboratory. Student can send their print
request to the printer and each print
request goto queue and serve one by one.
● Computer input operations performing
through mouse and keyboard are also
recorded into queue and serve on the basis
of FIFO.
Queue Operations
● Rear: is the tail/bottom of the queue. The entry at rear is the most
recently arrived item and must wait until the other entries are
present in the queue.
● Front: is the position from where items can be taken out from
queue. It is also termed as head or top of the queue. The entry at the
front position is ready to be served.
● Append: The operation to add an item at the rear position of the
queue is termed as append or enqueue. We can append items at the
rear position of the queue until the queue is not full. The rear points
towards the position where new item has been appended.
● Serve: The operation to remove an item from the front position of
the queue is termed as server or dequeue. We can serve the items in
the queue until the queue is not empty. The front points towards the
position from where the available item can be severed
Queue Operations
● IsEmpty: Queue is consider empty when there is no item on
front of the queue. IsEmpty operation checks for this condition and
return true if the queue is empty else return false.
● IsFull: If no element can be appended at rear of the queue then
queue consider as full. When rear of the queue reaches this limit,
then queue is full and the IsFull operation return true else return
false.
Abstract DataType of Queue
● Data/Attributes/Values:
int size; //maximum elements that queue can accommodate.
– int Front; //ready to serve position.
– int Rear; //last appended item position.
– Type Items; //Items that the queue can handle.
● Functions/Operations:
– CreateQueue(int size);
● Create queue that can contain size items.
– Void Append(Type n);
● Condition: queue is not full, then append at rear position.
– Type Server( );
● Condition: queue is not empty then return the front item.
Abstract DataType of Queue
● Functions/Operations:
– Int IsEmpty( );
● return true if queue is empty else return false.
– Int IsFull( );
● Return true if queue is full else return false.
Queue Physical Model
● Items A Z C D E
Queue Physical Model
● Items A Z C D E
Queue Physical Model
● Items A Z C D E
Queue Physical Model
● Items A Z C D E
Queue Physical Model
● Items A Z C D E
Queue Implementation In C++
● Template <class AnyType>
● Class Queue {
● Private:
– Int Size, Rear, Front;
– AnyType* Items;
● Public:
– Queue( ) { //default constructor
– Size =50; Rear = -1; Front = 0 //Front =0 is constant is Physical Model
– Items = new AnyType[Size];
● }
● Queue(int size) {
– Size=size; Rear = -1; Front = 0;
– Items = new AnyType[Size];
}
Queue Implementation In C++
● ~Queue ( ) {
– Delete [ ] Items; }
● Void Append (AnyType newItem) {
– If (!IsFull( ) )
● Items[++Rear ] = newItem;
– else
● Cout << “n Queue is Full … Append Failed”; }
● AnyType Server (void) {
– If (!IsEmpty ( ) )
● AnyType item =Item [Front]; // Same as item =item[0]
● for ( int i=0; i<Rear; i++ ) //Move each item one step forward
– Items[i] =Items [i+1];
● Rear --;
● Return item; }
– else
● Cout << “n Queue is empty … Serve failed”; }
Queue Implementation In C++
● Int IsEmpty ( ) { return (Rear == -1 ) ; }
● Int IsFull ( ) { return (Rear == (Size-1) ); }
● Void Display( ) {
● Cout<< “n”;
● If (IsEmpty( ) )
– cout<<”Empty”;
● Else
– for(int i=Rear; i>=Front; i—)
● cout<<Items[i]<< “ “;
● }
● }; //end physical Model Queue class
Queue Implementation In C++
● Void main( )
● { Queue<char> q(8);
● q.Display( );
● q.Append('A'); q.Display( );
● q.Append('C'); q.Display( );
● q.Serve( ); q.Display( );
● q.Append('G'); q.Display( );
● q.Append('D'); q.Display( );
● q.Append('M'); q.Display( );
● q.Serve( ); q.Display( );
● q.Append('Q'); q.Display( );
● q.Append('Z'); q.Display( );
● q.Append('R'); q.Display( );
● q.Serve();
● q.Append('J'); q.Display( );
● q.Append('H'); q.Display( );
● q.Append('W'); q.Display( );
● q.Append('E'); q.Display( );
● q.Serve( ); q.Display ( );
● getch( );
● }
Physical Model
Action Queue (Rear ← → Front ) Rear Front
Initial Empty -1 0
Append('A') A 0 0
Append('C') C A 1 0
Serve( ); C 0 0
Append('G') G C 1 0
Append('D') D G C 2 0
Append('M') M D G C 3 0
Serve( ); M D G 2 0
Append('Q') Q M D G 3 0
Append('Z') Z Q M D G 4 0
Append('R') R Z Q M D G 5 0
Serve( ); R Z Q M D 4 0
Append('J') J R Z Q M D 5 0
Append('H') H J R Z Q M D 6 0
Append('W') W H J R Z Q M D 7 0
Append('E') Queue Full … Append failed 7 0
Serve( ); W H J R Z Q M 6 0
Disadvantage of Physical Model
Queue
● On each server operation requires n move
operations, so that time efficiency of this
model is poor.
● To remove this poor efficiency while serve
is called “Single-Step Append-Serve
Model”. In this mode both rear and append
move.
Single Step Append-Serve Model
Action Queue (Rear ← → Front ) Rear Front
Initial Empty -1 0
Append('A') A 0 0
Append('C') C A 1 0
Serve( ); C 1 1
Append('G') G C 2 1
Append('D') D G C 3 1
Append('M') M D G C 4 1
Serve( ); M D G 4 2
Append('Q') Q M D G 5 2
Append('Z') Z Q M D G 6 2
Append('R') R Z Q M D G 7 2
Serve( ); R Z Q M D 7 3
Append('J') Queue Full … Append Fail 7 3
Append('H') Queue Full … Append Fail 7 3
Append('W') Queue Full … Append Fail 7 3
Append('E') Queue Full … Append Fail 7 3
Serve( ); R Z Q M 7 4
AnyType Serve(void) {
if(!IsEmpty( ) )
Return Items[Front++] ;
else
cout<<”Queue is Empty... Serve failed”;
}
– int IsEmpty() { return (Front > Rear ); }
– Int IsFull( ) { return (Rear == (Size-1) }
Single Step Append-Serve Model
Implementation
Disadvantage of Single Step
Append-Serve Model
Although time efficiency of single step
append-serve mode is good and no need
to move n element on each serve but
space utilization is poor.
Circular Queue
● The solution of append-serve model is
circular queue.
Circular Queue Implementation
● AnyType Append(AnyType new Item) {
If (!IsFull() ) {
Rear++
if(Rear == Size)
Rear=0;
Items[Rear]= newItem;
}
else
cout<<”Queue is full … Append failed.”;
}
Circular Queue Implementation
● AnyType Serve(void) {
If (!IsEmpty( ) {
AnyType item =Items[Front];
Front++;
If (Front ==Size)
Front=0;
Return item;
}
else
cout<<”Queue is Empty … serve failed”;
Circular Queue Implementation
● Int IsEmpty( ) {
Return (Front==NextPos(Rear) ); }
● Int Is Full() {
Return (Front ==NextPos(Nextpos(Rear)) ); }
● Int NextPos(int r ) {
r++;
if(r ==size)
r=0;
Return r;
}
Circular Queue Append-Serve Model
Action Queue (Rear ← → Front ) Rear Front
Initial Empty -1 0
Append('A') A 0 0
Append('C') C A 1 0
Serve( ); C 1 1
Append('G') G C 2 1
Append('D') D G C 3 1
Append('M') M D G C 4 1
Serve( ); M D G 4 2
Append('Q') Q M D G 5 2
Append('Z') Z Q M D G 6 2
Append('R') R Z Q M D G 7 2
Serve( ); R Z Q M D 7 3
Append('J') J R Z Q M D 0 3
Append('H') H J R Z Q M D 1 3
Append('W') Queue Full … Append Fail 1 3
Append('E') Queue Full … Append Fail 1 3
Serve( ); H J R Z Q M 1 4
Circular Queue Append-Serve Model
Action Queue (Rear ← → Front ) Rear Front
Serve( ); H J R Z 1 6
Serve( ); H J R 1 7
Serve( ); H J 1 0
Serve( ); H 1 1
Serve( ); Empty 1 2
Serve( ); Queue Empty … Serve Failed 1 2
Queue Application – Airport Simulation
Random Arrivals and
TakeOff
Results & comments Landing
(Rear ← → Front )
Takeoff
(Rear ← → Front)
Initial Simulation start Empty Empty
Landing.Append('G') Plane G Arrive for landing G Empty
Takeoff.Append('K') Plane K Arrive for Take-off G K
Landing.Append('Q') Plane Q Arrive for landing Q G K
Landing.Serve( ) Plane G landed Q K
Takeoff.Append('C') Plane C Arrive for Take-off Q C K
Landing.Append('R') Plane R Arrive for landing R Q C K
Landing.Serve( ) Plane Q landed R C K
Landing.Serve( ) Plane R landed Empty C K
Takeoff.Serve( ) Plane K Take off Empty C
Takeoff.Append('J') Plane J Arrive for Take-off Empty J C
Takeoff.Serve( ) Plane C Take off Empty J
Landing.Append('W') Plane W Arrive for landing W J
Takeoff.Append('K') Plane K Arrive for Take-off W K J
Landing.Serve( ) Plane W landed Empty K J
Takeoff.Serve( ) Plane J Take off Empty K
Takeoff.Serve( ) Plane K Take off Empty Empty
Priority Queue
● Priority queue is a data structure in which
items of the queue have priorities with
respect to each other. The items having
higher priority are served first and items
with lower priority are served later.
● Priority queue can implement on many
places e.g. On LAN shared printers print
request can print on the basis of priority.
Similarly Operating system has typically
queue of events. Each event has its own
priority and all event executed on their own
priority.
Priority Queue
● There are two type of priority queues
Minimum and Maximum.
● Minimum Priority Queue: A queue from
which the item that is minimum priority is
served first and the item having maximum
priority is served last.
● Maximum Priority Queue: A queue from
which the item that is maximum priority is
served first and the item having maximum
priority is served last.
Priority Queue ADT
Data/Attributes/Values
Int Size, Front, Rear;
Type Items;
Functions/Operations:
CreateQueue(int size);
//Create queue that can contain size items
Void place(Type n, int priority);
Condition: if queue is not full, then place at rear position w.r.t priority
For maximum priority queue the items with higher priorities are placed ahead of
lower priorities items and for minimum priority queue this is reverse.
● Type Serve( );
Condition: If queue is not empty then return the front item.
● Int IsEmpty ( ); Return 1 if queue is empty otherwise return 0
● Int IsFull( ); Return 1 if queue is full otherwise return 0
Priority Queue Implementation
# include <iostream.h>
● #include <conio.h>
● Template <class AnyType>
● Struct Item {
– AnyType Item;
– Int priority;
● Template <class AnyType>
● Class MaxPriorityQueue {
● private:
– int Size, Rear, Front;
– Item<AnyType>* Items;
● Public:
– MaxPriorityQueue ( ) //default constructor
– Size=50;
– Rear = -1
– Front = 0 //Always 0 in physical model
Items= new Item<AnyType>[Size];
}
● MaxPriorityQueue(int size) {
– Size = size;
– Rear = -1 ;
– Front = 0; //Always 0 in physical model
– Items = new Item<AnyType>[Size];
– }
● ~MaxpriorityQueue ( ) { delete[ ] Items; }
● Void Place(Item<AnyType> newItem) {
– if(IsEmpty( ) ) {
● Items [ ++Rear] = newItem;
– }
–
Priority Queue Implementation
if(!IsFull( ) ) {
Int i, putAt;
– For (i=Rear; i>=Front; i - - ) //Find where to
put item
if(newItem.priority <= Item[i].priority )
Break;
– PutAt=++ i //position where to put new item
– Rear ++;
– For (i=Rear; i>putAt; i-- ) //move item to
create space
● Item[i]=Items[ i -1];
– Items[putAt] = newItem;
– }
– Else
● cout<< “n Priority queue is Full. Place
failed “
● } // ending “} “ of place function
AnyType Serve(void) {
– if(!IsEmpty ( ) ) {
● AnyType item=Items[Front].Item;
● //same as item = item[ 0 ]
● for(int i=0; i<Rear; i++)
– Items[i] =Items[ i+1];
● Rear--;
● return item;
}
– else
– cout<<”nQueue is Empty... Serve failed”;
– }
– Int IsEmpty ( ) { return (Rear ==-1); }
– Int IsFull ( ) {return (Rear == (Size-1 ) ); }
– void Display( ) {
– cout<<endl <<Front<<' ' <<Rear<<' ' << “ “;
– If (IsEmpty( ) )
● cout<<”Empty”;
Priority Queue Implementation
– void Display( ) {
– cout<<endl <<Front<<' ' <<Rear<<' ' << “ “;
– If (IsEmpty( ) )
● cout<<”Empty”;
– else
● for(int i<Rear; i>=Front; i—)
– cout<<Item[i].Item<< ' ';
– }
– }; //end Physical model max priority Queue
class
– void main( ) {
– MaxpriorityQueue<char> q(8);
– Item<char> Items[ ] = { {'A', 0}, {'C', 0}, {'G', 1},
{'D', 0}, {'M', 2}, {'Q', 1},
{'Z', 2}, {'R', 1}, {'J', 3},
{'H', 0}, {'W', 1},{'E', 2}};
q.Display ( );
q.Place(Items[0]); q.Display( );
q.Place(Items[1]); q.Display( );
q.Serve( ) ;
q.Place(Items[2]); q.Display( );
q.Place(Items[3]); q.Display( );
q.Place(Items[4]); q.Display( );
q.Serve( );
q.Place(Items[5]); q.Display( );
q.Place(Items[6]); q.Display( );
q.Place(Items[7]); q.Display( );
q.Serve( );
q.Place(Items[8]); q.Display( );
q.Place(Items[9]); q.Display( );
q.Place(Items[9]); q.Display( );
q.Place(Items[9]); q.Display( );
● q.Serve( );
● getch ( ); }
Max Priority Queue (Physical Model)
Action Max priority Queue
(Rear ← → Front )
Front Rear
Initial Empty 0 -1
Place (A, 0) A, 0 0 0
Place (c, 0) C,0 A,0 0 1
Serve ( ) C, 0 0 0
Place (G, 1) C,0 G,1 0 1
Place (D, 0) D,0 C,0 G,1 0 2
Place (M, 2) D,0 C,0 G,1 M,2 0 3
Serve( ) D,0 C,0 G,1 0 2
Place (Q, 1) D,0 C,0 Q,1 G,1 0 3
Place (Z, 2) D,0 C,0 Q,1 G,1 Z,2 0 4
Place (R, 1) D,0 C,0 R,1 Q,1 G,1 Z,2 0 5
Serve( ) D,0 C,0 R,1 Q,1 G,1 0 4
Place (J, 3) D,0 C,0 R,1 Q,1 G,1 J,3 0 5
Place (H, 0) H,0 D,0 C,0 R,1 Q,1 G,1 J,3 0 6
Place (W, 1) H,0 D,0 C,0 W,1 R,1 Q,1 G,1 J,3 0 7
Place (E, 2) Priority Queue is Full..Place Failed 0 7
Serve( ) H,0 D,0 C,0 W,1 R,1 Q,1 G,1 0 6

More Related Content

What's hot

03 stacks and_queues_using_arrays
03 stacks and_queues_using_arrays03 stacks and_queues_using_arrays
03 stacks and_queues_using_arrays
tameemyousaf
 
Stacks Implementation and Examples
Stacks Implementation and ExamplesStacks Implementation and Examples
Stacks Implementation and Examples
greatqadirgee4u
 
Classification of Compiler
Classification of CompilerClassification of Compiler
Classification of Compiler
maharajdey
 
Infix to Prefix (Conversion, Evaluation, Code)
Infix to Prefix (Conversion, Evaluation, Code)Infix to Prefix (Conversion, Evaluation, Code)
Infix to Prefix (Conversion, Evaluation, Code)
Ahmed Khateeb
 

What's hot (19)

Quick sort
Quick sortQuick sort
Quick sort
 
stack
stackstack
stack
 
03 stacks and_queues_using_arrays
03 stacks and_queues_using_arrays03 stacks and_queues_using_arrays
03 stacks and_queues_using_arrays
 
Queues-handouts
Queues-handoutsQueues-handouts
Queues-handouts
 
11 - Programming languages
11 - Programming languages11 - Programming languages
11 - Programming languages
 
Functional programming-advantages
Functional programming-advantagesFunctional programming-advantages
Functional programming-advantages
 
Linear search
Linear searchLinear search
Linear search
 
Conversion of Infix To Postfix Expressions
Conversion of Infix To Postfix Expressions Conversion of Infix To Postfix Expressions
Conversion of Infix To Postfix Expressions
 
Stacks Implementation and Examples
Stacks Implementation and ExamplesStacks Implementation and Examples
Stacks Implementation and Examples
 
Chapter03b
Chapter03bChapter03b
Chapter03b
 
Applications of stack
Applications of stackApplications of stack
Applications of stack
 
Exploiting vectorization with ISPC
Exploiting vectorization with ISPCExploiting vectorization with ISPC
Exploiting vectorization with ISPC
 
Vectors,squence & list
Vectors,squence & listVectors,squence & list
Vectors,squence & list
 
Basic constructs ii
Basic constructs  iiBasic constructs  ii
Basic constructs ii
 
Circular Queue
Circular QueueCircular Queue
Circular Queue
 
Stack - Data Structure - Notes
Stack - Data Structure - NotesStack - Data Structure - Notes
Stack - Data Structure - Notes
 
Classification of Compiler
Classification of CompilerClassification of Compiler
Classification of Compiler
 
강의자료8
강의자료8강의자료8
강의자료8
 
Infix to Prefix (Conversion, Evaluation, Code)
Infix to Prefix (Conversion, Evaluation, Code)Infix to Prefix (Conversion, Evaluation, Code)
Infix to Prefix (Conversion, Evaluation, Code)
 

Viewers also liked (9)

Queue
QueueQueue
Queue
 
Queue
QueueQueue
Queue
 
Queue Data Structure (w/ php egs)
Queue Data Structure (w/ php egs)Queue Data Structure (w/ php egs)
Queue Data Structure (w/ php egs)
 
Queue
QueueQueue
Queue
 
Ppt presentation of queues
Ppt presentation of queuesPpt presentation of queues
Ppt presentation of queues
 
Queue Data Structure
Queue Data StructureQueue Data Structure
Queue Data Structure
 
Queue as data_structure
Queue as data_structureQueue as data_structure
Queue as data_structure
 
Queue data structure
Queue data structureQueue data structure
Queue data structure
 
Notes DATA STRUCTURE - queue
Notes DATA STRUCTURE - queueNotes DATA STRUCTURE - queue
Notes DATA STRUCTURE - queue
 

Similar to Queue

Similar to Queue (20)

Qprgs
QprgsQprgs
Qprgs
 
Unit 4 queue
Unit   4 queueUnit   4 queue
Unit 4 queue
 
Dynamic Queue.pptx
Dynamic Queue.pptxDynamic Queue.pptx
Dynamic Queue.pptx
 
Queue(lecture8).pptx
Queue(lecture8).pptxQueue(lecture8).pptx
Queue(lecture8).pptx
 
Queue
QueueQueue
Queue
 
Queue by rajanikanth
Queue by rajanikanthQueue by rajanikanth
Queue by rajanikanth
 
Unit – iv queue
Unit – iv    queueUnit – iv    queue
Unit – iv queue
 
Queue
QueueQueue
Queue
 
Queue oop
Queue   oopQueue   oop
Queue oop
 
Queue in Data Structure
Queue in Data StructureQueue in Data Structure
Queue in Data Structure
 
Queue Data Structure
Queue Data StructureQueue Data Structure
Queue Data Structure
 
pure-functional-programming.pdf
pure-functional-programming.pdfpure-functional-programming.pdf
pure-functional-programming.pdf
 
Fundamentals of Data Structure and Queues
Fundamentals of Data Structure and QueuesFundamentals of Data Structure and Queues
Fundamentals of Data Structure and Queues
 
Algo>Queues
Algo>QueuesAlgo>Queues
Algo>Queues
 
Leniar datastructure
Leniar datastructureLeniar datastructure
Leniar datastructure
 
Glancing essential features of Dart, before stepping into Flutter
Glancing essential features of Dart, before stepping into FlutterGlancing essential features of Dart, before stepping into Flutter
Glancing essential features of Dart, before stepping into Flutter
 
@Chapter 4 DSA Part II.pptx
@Chapter 4 DSA Part II.pptx@Chapter 4 DSA Part II.pptx
@Chapter 4 DSA Part II.pptx
 
Data structure.ppt
Data structure.pptData structure.ppt
Data structure.ppt
 
LinkedQueues.ppt
LinkedQueues.pptLinkedQueues.ppt
LinkedQueues.ppt
 
LinkedQueues.ppt
LinkedQueues.pptLinkedQueues.ppt
LinkedQueues.ppt
 

More from Zaid Shabbir

Modern SDLC and QA.pptx
Modern SDLC and QA.pptxModern SDLC and QA.pptx
Modern SDLC and QA.pptx
Zaid Shabbir
 

More from Zaid Shabbir (13)

Modern SDLC and QA.pptx
Modern SDLC and QA.pptxModern SDLC and QA.pptx
Modern SDLC and QA.pptx
 
Software Agility.pptx
Software Agility.pptxSoftware Agility.pptx
Software Agility.pptx
 
Software Development Guide To Accelerate Performance
Software Development Guide To Accelerate PerformanceSoftware Development Guide To Accelerate Performance
Software Development Guide To Accelerate Performance
 
Software Testing and Agility
Software Testing and Agility Software Testing and Agility
Software Testing and Agility
 
Data security and Integrity
Data security and IntegrityData security and Integrity
Data security and Integrity
 
Cloud computing &amp; dbms
Cloud computing &amp; dbmsCloud computing &amp; dbms
Cloud computing &amp; dbms
 
No sql bigdata and postgresql
No sql bigdata and postgresqlNo sql bigdata and postgresql
No sql bigdata and postgresql
 
Files and data storage
Files and data storageFiles and data storage
Files and data storage
 
Queue
QueueQueue
Queue
 
Sorting
SortingSorting
Sorting
 
Tree and binary tree
Tree and binary treeTree and binary tree
Tree and binary tree
 
Sorting
SortingSorting
Sorting
 
Introduction to data structure
Introduction to data structureIntroduction to data structure
Introduction to data structure
 

Recently uploaded

The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 

Recently uploaded (20)

ManageIQ - Sprint 236 Review - Slide Deck
ManageIQ - Sprint 236 Review - Slide DeckManageIQ - Sprint 236 Review - Slide Deck
ManageIQ - Sprint 236 Review - Slide Deck
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 

Queue

  • 2. QUEUE A queue is two ended data structure in which items can be inserted from one end and taken out from the other end. Therefore , the first item inserted into queue is the first item to be taken out from the queue. This property is called First in First out [FIFO].
  • 3. Queue Example ● A queue of people in the bank who are trying to submit utility bills. ● A line of vehicle on the motorway toll plaza. ● Consider a shared printer in a computer laboratory. Student can send their print request to the printer and each print request goto queue and serve one by one. ● Computer input operations performing through mouse and keyboard are also recorded into queue and serve on the basis of FIFO.
  • 4. Queue Operations ● Rear: is the tail/bottom of the queue. The entry at rear is the most recently arrived item and must wait until the other entries are present in the queue. ● Front: is the position from where items can be taken out from queue. It is also termed as head or top of the queue. The entry at the front position is ready to be served. ● Append: The operation to add an item at the rear position of the queue is termed as append or enqueue. We can append items at the rear position of the queue until the queue is not full. The rear points towards the position where new item has been appended. ● Serve: The operation to remove an item from the front position of the queue is termed as server or dequeue. We can serve the items in the queue until the queue is not empty. The front points towards the position from where the available item can be severed
  • 5. Queue Operations ● IsEmpty: Queue is consider empty when there is no item on front of the queue. IsEmpty operation checks for this condition and return true if the queue is empty else return false. ● IsFull: If no element can be appended at rear of the queue then queue consider as full. When rear of the queue reaches this limit, then queue is full and the IsFull operation return true else return false.
  • 6. Abstract DataType of Queue ● Data/Attributes/Values: int size; //maximum elements that queue can accommodate. – int Front; //ready to serve position. – int Rear; //last appended item position. – Type Items; //Items that the queue can handle. ● Functions/Operations: – CreateQueue(int size); ● Create queue that can contain size items. – Void Append(Type n); ● Condition: queue is not full, then append at rear position. – Type Server( ); ● Condition: queue is not empty then return the front item.
  • 7. Abstract DataType of Queue ● Functions/Operations: – Int IsEmpty( ); ● return true if queue is empty else return false. – Int IsFull( ); ● Return true if queue is full else return false.
  • 8. Queue Physical Model ● Items A Z C D E
  • 9. Queue Physical Model ● Items A Z C D E
  • 10. Queue Physical Model ● Items A Z C D E
  • 11. Queue Physical Model ● Items A Z C D E
  • 12. Queue Physical Model ● Items A Z C D E
  • 13. Queue Implementation In C++ ● Template <class AnyType> ● Class Queue { ● Private: – Int Size, Rear, Front; – AnyType* Items; ● Public: – Queue( ) { //default constructor – Size =50; Rear = -1; Front = 0 //Front =0 is constant is Physical Model – Items = new AnyType[Size]; ● } ● Queue(int size) { – Size=size; Rear = -1; Front = 0; – Items = new AnyType[Size]; }
  • 14. Queue Implementation In C++ ● ~Queue ( ) { – Delete [ ] Items; } ● Void Append (AnyType newItem) { – If (!IsFull( ) ) ● Items[++Rear ] = newItem; – else ● Cout << “n Queue is Full … Append Failed”; } ● AnyType Server (void) { – If (!IsEmpty ( ) ) ● AnyType item =Item [Front]; // Same as item =item[0] ● for ( int i=0; i<Rear; i++ ) //Move each item one step forward – Items[i] =Items [i+1]; ● Rear --; ● Return item; } – else ● Cout << “n Queue is empty … Serve failed”; }
  • 15. Queue Implementation In C++ ● Int IsEmpty ( ) { return (Rear == -1 ) ; } ● Int IsFull ( ) { return (Rear == (Size-1) ); } ● Void Display( ) { ● Cout<< “n”; ● If (IsEmpty( ) ) – cout<<”Empty”; ● Else – for(int i=Rear; i>=Front; i—) ● cout<<Items[i]<< “ “; ● } ● }; //end physical Model Queue class
  • 16. Queue Implementation In C++ ● Void main( ) ● { Queue<char> q(8); ● q.Display( ); ● q.Append('A'); q.Display( ); ● q.Append('C'); q.Display( ); ● q.Serve( ); q.Display( ); ● q.Append('G'); q.Display( ); ● q.Append('D'); q.Display( ); ● q.Append('M'); q.Display( ); ● q.Serve( ); q.Display( ); ● q.Append('Q'); q.Display( ); ● q.Append('Z'); q.Display( ); ● q.Append('R'); q.Display( ); ● q.Serve(); ● q.Append('J'); q.Display( ); ● q.Append('H'); q.Display( ); ● q.Append('W'); q.Display( ); ● q.Append('E'); q.Display( ); ● q.Serve( ); q.Display ( ); ● getch( ); ● }
  • 17. Physical Model Action Queue (Rear ← → Front ) Rear Front Initial Empty -1 0 Append('A') A 0 0 Append('C') C A 1 0 Serve( ); C 0 0 Append('G') G C 1 0 Append('D') D G C 2 0 Append('M') M D G C 3 0 Serve( ); M D G 2 0 Append('Q') Q M D G 3 0 Append('Z') Z Q M D G 4 0 Append('R') R Z Q M D G 5 0 Serve( ); R Z Q M D 4 0 Append('J') J R Z Q M D 5 0 Append('H') H J R Z Q M D 6 0 Append('W') W H J R Z Q M D 7 0 Append('E') Queue Full … Append failed 7 0 Serve( ); W H J R Z Q M 6 0
  • 18. Disadvantage of Physical Model Queue ● On each server operation requires n move operations, so that time efficiency of this model is poor. ● To remove this poor efficiency while serve is called “Single-Step Append-Serve Model”. In this mode both rear and append move.
  • 19. Single Step Append-Serve Model Action Queue (Rear ← → Front ) Rear Front Initial Empty -1 0 Append('A') A 0 0 Append('C') C A 1 0 Serve( ); C 1 1 Append('G') G C 2 1 Append('D') D G C 3 1 Append('M') M D G C 4 1 Serve( ); M D G 4 2 Append('Q') Q M D G 5 2 Append('Z') Z Q M D G 6 2 Append('R') R Z Q M D G 7 2 Serve( ); R Z Q M D 7 3 Append('J') Queue Full … Append Fail 7 3 Append('H') Queue Full … Append Fail 7 3 Append('W') Queue Full … Append Fail 7 3 Append('E') Queue Full … Append Fail 7 3 Serve( ); R Z Q M 7 4
  • 20. AnyType Serve(void) { if(!IsEmpty( ) ) Return Items[Front++] ; else cout<<”Queue is Empty... Serve failed”; } – int IsEmpty() { return (Front > Rear ); } – Int IsFull( ) { return (Rear == (Size-1) } Single Step Append-Serve Model Implementation
  • 21. Disadvantage of Single Step Append-Serve Model Although time efficiency of single step append-serve mode is good and no need to move n element on each serve but space utilization is poor.
  • 22. Circular Queue ● The solution of append-serve model is circular queue.
  • 23. Circular Queue Implementation ● AnyType Append(AnyType new Item) { If (!IsFull() ) { Rear++ if(Rear == Size) Rear=0; Items[Rear]= newItem; } else cout<<”Queue is full … Append failed.”; }
  • 24. Circular Queue Implementation ● AnyType Serve(void) { If (!IsEmpty( ) { AnyType item =Items[Front]; Front++; If (Front ==Size) Front=0; Return item; } else cout<<”Queue is Empty … serve failed”;
  • 25. Circular Queue Implementation ● Int IsEmpty( ) { Return (Front==NextPos(Rear) ); } ● Int Is Full() { Return (Front ==NextPos(Nextpos(Rear)) ); } ● Int NextPos(int r ) { r++; if(r ==size) r=0; Return r; }
  • 26. Circular Queue Append-Serve Model Action Queue (Rear ← → Front ) Rear Front Initial Empty -1 0 Append('A') A 0 0 Append('C') C A 1 0 Serve( ); C 1 1 Append('G') G C 2 1 Append('D') D G C 3 1 Append('M') M D G C 4 1 Serve( ); M D G 4 2 Append('Q') Q M D G 5 2 Append('Z') Z Q M D G 6 2 Append('R') R Z Q M D G 7 2 Serve( ); R Z Q M D 7 3 Append('J') J R Z Q M D 0 3 Append('H') H J R Z Q M D 1 3 Append('W') Queue Full … Append Fail 1 3 Append('E') Queue Full … Append Fail 1 3 Serve( ); H J R Z Q M 1 4
  • 27. Circular Queue Append-Serve Model Action Queue (Rear ← → Front ) Rear Front Serve( ); H J R Z 1 6 Serve( ); H J R 1 7 Serve( ); H J 1 0 Serve( ); H 1 1 Serve( ); Empty 1 2 Serve( ); Queue Empty … Serve Failed 1 2
  • 28. Queue Application – Airport Simulation Random Arrivals and TakeOff Results & comments Landing (Rear ← → Front ) Takeoff (Rear ← → Front) Initial Simulation start Empty Empty Landing.Append('G') Plane G Arrive for landing G Empty Takeoff.Append('K') Plane K Arrive for Take-off G K Landing.Append('Q') Plane Q Arrive for landing Q G K Landing.Serve( ) Plane G landed Q K Takeoff.Append('C') Plane C Arrive for Take-off Q C K Landing.Append('R') Plane R Arrive for landing R Q C K Landing.Serve( ) Plane Q landed R C K Landing.Serve( ) Plane R landed Empty C K Takeoff.Serve( ) Plane K Take off Empty C Takeoff.Append('J') Plane J Arrive for Take-off Empty J C Takeoff.Serve( ) Plane C Take off Empty J Landing.Append('W') Plane W Arrive for landing W J Takeoff.Append('K') Plane K Arrive for Take-off W K J Landing.Serve( ) Plane W landed Empty K J Takeoff.Serve( ) Plane J Take off Empty K Takeoff.Serve( ) Plane K Take off Empty Empty
  • 29. Priority Queue ● Priority queue is a data structure in which items of the queue have priorities with respect to each other. The items having higher priority are served first and items with lower priority are served later. ● Priority queue can implement on many places e.g. On LAN shared printers print request can print on the basis of priority. Similarly Operating system has typically queue of events. Each event has its own priority and all event executed on their own priority.
  • 30. Priority Queue ● There are two type of priority queues Minimum and Maximum. ● Minimum Priority Queue: A queue from which the item that is minimum priority is served first and the item having maximum priority is served last. ● Maximum Priority Queue: A queue from which the item that is maximum priority is served first and the item having maximum priority is served last.
  • 31. Priority Queue ADT Data/Attributes/Values Int Size, Front, Rear; Type Items; Functions/Operations: CreateQueue(int size); //Create queue that can contain size items Void place(Type n, int priority); Condition: if queue is not full, then place at rear position w.r.t priority For maximum priority queue the items with higher priorities are placed ahead of lower priorities items and for minimum priority queue this is reverse. ● Type Serve( ); Condition: If queue is not empty then return the front item. ● Int IsEmpty ( ); Return 1 if queue is empty otherwise return 0 ● Int IsFull( ); Return 1 if queue is full otherwise return 0
  • 32. Priority Queue Implementation # include <iostream.h> ● #include <conio.h> ● Template <class AnyType> ● Struct Item { – AnyType Item; – Int priority; ● Template <class AnyType> ● Class MaxPriorityQueue { ● private: – int Size, Rear, Front; – Item<AnyType>* Items; ● Public: – MaxPriorityQueue ( ) //default constructor – Size=50; – Rear = -1 – Front = 0 //Always 0 in physical model Items= new Item<AnyType>[Size]; } ● MaxPriorityQueue(int size) { – Size = size; – Rear = -1 ; – Front = 0; //Always 0 in physical model – Items = new Item<AnyType>[Size]; – } ● ~MaxpriorityQueue ( ) { delete[ ] Items; } ● Void Place(Item<AnyType> newItem) { – if(IsEmpty( ) ) { ● Items [ ++Rear] = newItem; – } –
  • 33. Priority Queue Implementation if(!IsFull( ) ) { Int i, putAt; – For (i=Rear; i>=Front; i - - ) //Find where to put item if(newItem.priority <= Item[i].priority ) Break; – PutAt=++ i //position where to put new item – Rear ++; – For (i=Rear; i>putAt; i-- ) //move item to create space ● Item[i]=Items[ i -1]; – Items[putAt] = newItem; – } – Else ● cout<< “n Priority queue is Full. Place failed “ ● } // ending “} “ of place function AnyType Serve(void) { – if(!IsEmpty ( ) ) { ● AnyType item=Items[Front].Item; ● //same as item = item[ 0 ] ● for(int i=0; i<Rear; i++) – Items[i] =Items[ i+1]; ● Rear--; ● return item; } – else – cout<<”nQueue is Empty... Serve failed”; – } – Int IsEmpty ( ) { return (Rear ==-1); } – Int IsFull ( ) {return (Rear == (Size-1 ) ); } – void Display( ) { – cout<<endl <<Front<<' ' <<Rear<<' ' << “ “; – If (IsEmpty( ) ) ● cout<<”Empty”;
  • 34. Priority Queue Implementation – void Display( ) { – cout<<endl <<Front<<' ' <<Rear<<' ' << “ “; – If (IsEmpty( ) ) ● cout<<”Empty”; – else ● for(int i<Rear; i>=Front; i—) – cout<<Item[i].Item<< ' '; – } – }; //end Physical model max priority Queue class – void main( ) { – MaxpriorityQueue<char> q(8); – Item<char> Items[ ] = { {'A', 0}, {'C', 0}, {'G', 1}, {'D', 0}, {'M', 2}, {'Q', 1}, {'Z', 2}, {'R', 1}, {'J', 3}, {'H', 0}, {'W', 1},{'E', 2}}; q.Display ( ); q.Place(Items[0]); q.Display( ); q.Place(Items[1]); q.Display( ); q.Serve( ) ; q.Place(Items[2]); q.Display( ); q.Place(Items[3]); q.Display( ); q.Place(Items[4]); q.Display( ); q.Serve( ); q.Place(Items[5]); q.Display( ); q.Place(Items[6]); q.Display( ); q.Place(Items[7]); q.Display( ); q.Serve( ); q.Place(Items[8]); q.Display( ); q.Place(Items[9]); q.Display( ); q.Place(Items[9]); q.Display( ); q.Place(Items[9]); q.Display( ); ● q.Serve( ); ● getch ( ); }
  • 35. Max Priority Queue (Physical Model) Action Max priority Queue (Rear ← → Front ) Front Rear Initial Empty 0 -1 Place (A, 0) A, 0 0 0 Place (c, 0) C,0 A,0 0 1 Serve ( ) C, 0 0 0 Place (G, 1) C,0 G,1 0 1 Place (D, 0) D,0 C,0 G,1 0 2 Place (M, 2) D,0 C,0 G,1 M,2 0 3 Serve( ) D,0 C,0 G,1 0 2 Place (Q, 1) D,0 C,0 Q,1 G,1 0 3 Place (Z, 2) D,0 C,0 Q,1 G,1 Z,2 0 4 Place (R, 1) D,0 C,0 R,1 Q,1 G,1 Z,2 0 5 Serve( ) D,0 C,0 R,1 Q,1 G,1 0 4 Place (J, 3) D,0 C,0 R,1 Q,1 G,1 J,3 0 5 Place (H, 0) H,0 D,0 C,0 R,1 Q,1 G,1 J,3 0 6 Place (W, 1) H,0 D,0 C,0 W,1 R,1 Q,1 G,1 J,3 0 7 Place (E, 2) Priority Queue is Full..Place Failed 0 7 Serve( ) H,0 D,0 C,0 W,1 R,1 Q,1 G,1 0 6