SlideShare a Scribd company logo
VELAMMAL ENGINEERING COLLEGE
An Autonomous Institution, Affiliated to Anna University Chennai, & Approved by AICTE Delhi
Department of Computer Science and
Engineering
UNIT 2 -QUEUE
Queue ADT
Dr. USHA M
Associate Professor
Dept of CSE
Velammal Engineering College
VELAMMAL ENGINEERING COLLEGE
An Autonomous Institution, Affiliated to Anna University Chennai, & Approved by AICTE Delhi
Dept of CSE, Velammal Engineering College,
Chennai
3
Agenda
• Queue ADT
• Array implementation of queue
• Linked list implementation of queue
• Types
– Circular Queue
– Double Ended Queue
– Priority Queue
• Applications of Queue
26/5/2020
Dept of CSE, Velammal Engineering College,
Chennai
4
Queue ADT
• Linear data structure
• Insertion occurs only at one end called rear
• Deletion occurs only at one end called front
• Element that is inserted first is deleted (FIFO
principle)
26/5/2020
Dept of CSE, Velammal Engineering College,
Chennai
5
Operations in queue:
• Enqueue: Inserting an element into the queue (at
rear)
• Dequeue: Deleting an element from the queue (at
front)
Exceptional Conditions:
• Overflow: Attempting to insert an element into
queue when it is full
• Underflow: Attempting to delete an element from
queue when it is empty
Queue ADT
26/5/2020
Dept of CSE, Velammal Engineering College,
Chennai
6
Array Implementation of Queue
Enqueue operation
Void Enqueue (int num) //Let num = 12 and max=5
{
if (rear==max-1)
print(“Queue Overlfow”);
else if (front == -1 && rear == -1)
{
front = rear = 0;
Q[rear] = num;
}
else
{
rear++;
Q[rear] = num;
}
}
12 25 18
26/5/2020
Dept of CSE, Velammal Engineering College,
Chennai
7
Dequeue Operation
Void Dequeue()
{
int val;
if (front == -1 || front > rear)
print(“Queue Underflow”);
else
{
val= Q[front];
front++;
}
}
10 20 30
26/5/2020
Dept of CSE, Velammal Engineering College,
Chennai
8
Display Operation
void Display ()
{
int i;
if (front == -1 || front > rear)
print (“Queue Underflow”);
else
{
for(i=front; i<=rear; i++)
print(Q[i]);
}
}
26/5/2020
Dept of CSE, Velammal Engineering College,
Chennai
9
Linked List Implementation of Queue
Enqueue operation
void Enqueue (int num) // Insert at end of linked list
{
n=(struct node *) malloc (sizeof (struct node));
ndata=num;
nnext=NULL;
if(rear == NULL)
front = rear= n;
else
{
rearnext = n;
rear = n;
}
}
26/5/2020
Dept of CSE, Velammal Engineering College,
Chennai
10
Dequeue Operation
Void Dequeue() // Delete at beginning of linked list
{
struct node *t;
if (front == NULL)
print(“Underflow”);
else
{
t = front;
front = front  next;
free(t);
}
}
26/5/2020
Dept of CSE, Velammal Engineering College,
Chennai
11
Circular Queue
• Type of queue
• Last position of the queue is connected to the first
position in a circular fashion
• Overcome the disadvantage of wastage of front end
memory space after performing dequeue operation
in linear queue
26/5/2020
Dept of CSE, Velammal Engineering College,
Chennai
12
• In linear queue, after performing dequeue, the
memory space at the front end remains
unused
• This situation does not occur in circular queue
Need for Circular Queue
26/5/2020
Dept of CSE, Velammal Engineering College,
Chennai
13
Enqueue Operation
void Cir_Enqueue (int num) // Let max=6
{
if((front == 0 && rear == max-1) || (rear ==(front-1)))
print(“Queue Overflow”);
else if (front == -1 && rear == -1)
{ front = rear = 0;
Q[rear] = num;
}
else if (rear == max-1 && front != 0)
{ rear = 0;
Q[rear] = num;
}
else
{ rear ++;
Q[rear] = num;
}
}
30
40
50 60
70
50
26/5/2020
Dept of CSE, Velammal Engineering College,
Chennai
14
Dequeue Operation
Void Cir_Dequeue()
{
int val;
if (front ==-1)
print (“Queue Underflow”);
val = Q[front];
if (front == rear)
front = rear = – 1;
else if (front == max – 1)
front = 0;
else
front ++;
}
20
40
20
30
20
30
40
front
26/5/2020
Dept of CSE, Velammal Engineering College,
Chennai
15
Double Ended Queue (DEQUE)
DEQUE is of two types
• Input restricted DEQUE
– Insertion at only one end
– Deletion at both ends
• Output restricted DEQUE
– Deletion at only one end
– Insertion at both ends
26/5/2020
Dept of CSE, Velammal Engineering College,
Chennai
16
Priority Queue
• Every item has a priority associated with it
• Element with higher priority is served first
• If two elements have same priority then they served
according to the order in the queue
• Generally, the value of the element itself is
considered as higher priority
• Applications:
– CPU scheduling
– Graph algorithms like Dijkstra’s shortest path, Prim’s
minimum spanning tree, etc,.
26/5/2020
Dept of CSE, Velammal Engineering College,
Chennai
17
Applications of Queue
• Data getting transferred between the IO Buffers
(Input Output Buffers).
• CPU scheduling and Disk scheduling.
• Managing shared resources between various
processes.
• Job scheduling
26/5/2020
Dept of CSE, Velammal Engineering College,
Chennai
18
• Traffic light functioning is the best example
for circular queues . The colors in the traffic light
follow a circular pattern.
• In page replacement algorithms, a circular list of
pages is maintained and when a page needs to be
replaced, the page in the front of the queue will be
chosen.
Applications of Circular Queue
26/5/2020
UNIT 2
STACK IN DATA STRUCTURES
STACK:DEFINITION
Stack is a linear data structure which follows a particular order in
which the operations are performed. The order may be LIFO(Last
In First Out) or FILO(First In Last Out).
WHY STACK?
Stack in PL:
• The return address (when the function is complete it returns back to the function
call)
• Arguments passed to the function
• Local variables of the function
Hardware Implementation of stack:
 consists of reserved contiguous region of memory with a stack pointer into that
memory.
 The stack has a fixed location in memory at which it begins.
 The stack pointer is a hardware register that points to the current extents of the
stack.
 There are stacks that grow downwards and ones that grow upwards.
 The stack can technically be located anywhere in memory, depending on the system.
WHY STACK?
Usage in Microprocessors
The stack shares the available RAM memory with the heap
and the static memory area.
The C runtime library takes care of things that need to be defined
before the main() function can be executed.
One of those things is setting up the stack by loading the stack
pointer register with the start address of the stack.
The CPU has special instructions for pushing values onto the
stack and popping them back.
Implementation of stack
The stack implementation can be done using
(i)Array :Array is a static data structure so the collection of data must be fixed
in size.
The only problem with this implementation is array size must be specified initially.
struct stack
{
int stk[MAXSIZE];
int top;
};
• Implementation using Linked List :Linked List is a dynamic data
structure. So collection of data can be used which are variable in size
and structure. The program executes can grow and shrink to
accommodate the data being stored.
struct Node {
int data;
struct Node* link;
};
struct Node* top;
Drawback of Linked List implementation
• All the operations take constant time
• Calls to malloc and free are expensive especially in comparison to
the pointer manipulation routines.
Limitation of Array Implementation:
The stack cannot grow and shrink dynamically as per the requirement.
Operations on Stack
The basic operations on stack are
1.Push()
2.Pop()
Push() operation
• push() function is used to insert an element at the top of the stack.
• The element is added to the stack container and the size of the stack is increased by 1.
Before Performing Push() operation the stack condition to be checked for overflow.
int isfull()
{
if(top == MAXSIZE)
return 1;
else
return 0;
}
tack Data Structure with Array and Linked List Implementation, Push and Pop Operations, and Applications,"Queue Data Structure with Array and Linked List Implementation, Enqueue and Dequeue Operations, and Applications"
• Step 1 − Checks if the stack is empty.
• Step 2 − If the stack is empty, produces an error and exit.
• Step 3 − If the stack is not empty, accesses the data element at which top is
pointing.
• Step 4 − Decreases the value of top by 1.
• Step 5 − Returns success. int pop()
{
int data;
if(!isempty())
{
data = stack[top];
top = top - 1;
return data;} else
{printf("Could not retrieve data, Stack is empty.n"); }}
Pop() operation
 Deletion of an element from the top of the stack is called pop operation. The value of the
variable top will be incremented by 1 whenever an item is deleted from the stack.
 The top most element of the stack is stored in an another variable and then the top is
decremented by 1.
 The operation returns the deleted value that was stored in another variable as the result.
 Before performing pop() operation the stack condition must be checked for underflow.
int isempty()
{
if(top == -1)
return 1;
else
return 0;
}
Program Execution
• https://www.tutorialspoint.com/data_structures_algorithms/stack_p
rogram_in_c.htm
Applications of Stack
• Evaluating Arithmetic Expression
• Conversion of infix to Postfix expression
• Backtracking Procedure
• During Function call and return Procedure
Evaluating Arithmetic Expression
• Stack organized computers are better suited for post-fix notation than
the traditional infix notation. Thus the infix notation must be
converted to the post-fix notation.
• Expressions are usually represented in what is known as Infix
notation, in which each operator is written between two operands
(i.e., A + B).
• we must distinguish between ( A + B )*C and A + ( B * C ) by using
either parentheses or some operator-precedence convention.
• Polish notation (prefix notation) –
It refers to the notation in which the operator is placed before
its two operands . Here no parentheses are required, i.e.,
+AB
• Reverse Polish notation(postfix notation) –
It refers to the analogous notation in which the operator is
placed after its two operands. Again, no parentheses is required in
Reverse Polish notation,
i.e., AB+
There are 3 levels of precedence for 5 binary operators
Highest: Exponentiation (^)
Next highest: Multiplication (*) and division (/)
Lowest: Addition (+) and Subtraction (-)
For ex:
Infix notation: (A-B)*[C/(D+E)+F]
Post-fix notation: AB- CDE +/F +*
• We first perform the arithmetic inside the parentheses (A-B) and (D+E).
• The division of C/(D+E) must done prior to the addition with F
• After that multiply the two terms inside the parentheses and bracket.
The procedure for getting the result is:
• Convert the expression in Reverse Polish notation( post-fix notation).
• Push the operands into the stack in the order they are appear.
• When any operator encounter then pop two topmost operands for executing the
operation.
• After execution push the result obtained into the stack.
• After the complete execution of expression the final result remains on the top
of the stack.
Infix notation: (2+4) * (4+6)
Post-fix notation: 2 4 + 4 6 + *
Result: 60
Conversion of infix to postfix
• Infix expression:The expression of the form a op b. When an operator
is in-between every pair of operands.
• Postfix expression:The expression of the form a b op. When an
operator is followed for every pair of operands.
• Why postfix representation of the expression?
The compiler scans the expression either from left to right or
from right to left.
• Consider the below expression: a op1 b op2 c op3 d
If op1 = +, op2 = *, op3 = +
The compiler first scans the expression to evaluate the expression b * c,
then again scan the expression to add a to it.
The result is then added to d after another scan.
The repeated scanning makes it very in-efficient.
• It is better to convert the expression to postfix(or prefix) form before
evaluation.
• The corresponding expression in postfix form is: abc*+d+.
Algorithm
• 1. Scan the infix expression from left to right.
• 2. If the scanned character is an operand, output it.
• 3. Else,
…..3.1 If the precedence of the scanned operator is greater than the precedence of the operator in the
stack(or the stack is empty or the stack contains a ‘(‘ ), push it.
…..3.2 Else, Pop all the operators from the stack which are greater than or equal to in precedence than
that of the scanned operator. After doing that Push the scanned operator to the stack. (If you encounter
parenthesis while popping then stop there and push the scanned operator in the stack.)
• 4. If the scanned character is an ‘(‘, push it to the stack.
• 5. If the scanned character is an ‘)’, pop the stack and and output it until a ‘(‘ is encountered, and
discard both the parenthesis.
• 6. Repeat steps 2-6 until infix expression is scanned.
• 7. Print the output
• 8. Pop and output from the stack until it is not empty.
tack Data Structure with Array and Linked List Implementation, Push and Pop Operations, and Applications,"Queue Data Structure with Array and Linked List Implementation, Enqueue and Dequeue Operations, and Applications"
tack Data Structure with Array and Linked List Implementation, Push and Pop Operations, and Applications,"Queue Data Structure with Array and Linked List Implementation, Enqueue and Dequeue Operations, and Applications"
Linked List Implementation - Initial Stack
Linked List Implementation-Push()
void pop()
{
struct Node* temp;
if (top == NULL) {
printf("nStack Underflow“);
exit(1);
}
else {
temp = top;
top = top->link;
temp->link = NULL;
free(temp);
}
}

More Related Content

PPTX
Unit II - LINEAR DATA STRUCTURES
PPTX
Comprehensive Guide to Queue Data Structure with Operations, Types, and Appli...
PPTX
Data Structures_Linear Data Structures Queue.pptx
PPTX
Stack Data Structure Explained with Array and Linked List Implementation, Ope...
PPTX
The presention is about the queue data structure
PPTX
UNIT II LINEAR DATA STRUCTURES – STACKS.pptx
PPTX
UNIT II LINEAR DATA STRUCTURES – STACKS.pptx
PPT
2 b queues
Unit II - LINEAR DATA STRUCTURES
Comprehensive Guide to Queue Data Structure with Operations, Types, and Appli...
Data Structures_Linear Data Structures Queue.pptx
Stack Data Structure Explained with Array and Linked List Implementation, Ope...
The presention is about the queue data structure
UNIT II LINEAR DATA STRUCTURES – STACKS.pptx
UNIT II LINEAR DATA STRUCTURES – STACKS.pptx
2 b queues

Similar to tack Data Structure with Array and Linked List Implementation, Push and Pop Operations, and Applications,"Queue Data Structure with Array and Linked List Implementation, Enqueue and Dequeue Operations, and Applications" (20)

PDF
Data Structures and Algorithm - Week 3 - Stacks and Queues
PPTX
QUEUE in data-structure (classification, working procedure, Applications)
PPT
Queue (1)(1).ppt
PPT
The Stack in data structures .ppt
PPTX
DS10-QUEUE0000000000000000000000000000000000000.pptx
PPTX
stacks and queues for public
PPTX
Unit 4 queue
PPT
PPT 2.1 Array.pptDFHFHGHCVNGVVGFHFHDFHDFHDFHDFH
PPTX
Unit 3 Stacks and Queues.pptx
PPTX
Queue collection of Frame work in oops through java
PPT
Data Structures
PDF
Introduction data structure
PPTX
stack_presentaton_HUSNAIN[2].pojklklklptx
PDF
Unit 1_Stack and Queue using Linked Organization.pdf
PDF
Unit 1_Stack and Queue using Linked Organization.pdf
PPTX
PPT Lecture 3.3.1 queue newccccccccccc.pptx
PPT
05-stack_queue.ppt
PPTX
Queues
PPTX
DS ppt1.pptx.c programing. Engineering. Data structure
Data Structures and Algorithm - Week 3 - Stacks and Queues
QUEUE in data-structure (classification, working procedure, Applications)
Queue (1)(1).ppt
The Stack in data structures .ppt
DS10-QUEUE0000000000000000000000000000000000000.pptx
stacks and queues for public
Unit 4 queue
PPT 2.1 Array.pptDFHFHGHCVNGVVGFHFHDFHDFHDFHDFH
Unit 3 Stacks and Queues.pptx
Queue collection of Frame work in oops through java
Data Structures
Introduction data structure
stack_presentaton_HUSNAIN[2].pojklklklptx
Unit 1_Stack and Queue using Linked Organization.pdf
Unit 1_Stack and Queue using Linked Organization.pdf
PPT Lecture 3.3.1 queue newccccccccccc.pptx
05-stack_queue.ppt
Queues
DS ppt1.pptx.c programing. Engineering. Data structure
Ad

More from usham61 (12)

PPTX
Tree Data Structures with Types, Properties, Traversals, Advanced Variants, a...
PPTX
Graph Data Structures with Types, Traversals, Connectivity, and Real-Life App...
PPTX
"Array and Linked List in Data Structures with Types, Operations, Implementat...
PPTX
Sorting and Hashing in Data Structures with Algorithms, Techniques, Implement...
PPTX
Graph Data Structure Concepts with Types, Representations, Traversal Techniqu...
PPTX
Application of graph ,biconnectivity FDP on DS.pptx
PPTX
Real-Life Applications of Graph Data Structures in Networks, Social Media, Sh...
PPTX
AVL Tree Data Structure with Insertion, Deletion, Rotations, Balancing Techni...
PPTX
B Tree Data Structure Concepts with Insertion, Deletion, Searching, and Appli...
PPTX
Tree Traversal Techniques in Data Structures with Inorder, Preorder, Postorde...
PPT
AVL Tree Animation with Rotations, Balancing Techniques, and Step-by-Step Ope...
PPTX
Introduction to Arrays and Linked Lists with Operations, Types, and Applicati...
Tree Data Structures with Types, Properties, Traversals, Advanced Variants, a...
Graph Data Structures with Types, Traversals, Connectivity, and Real-Life App...
"Array and Linked List in Data Structures with Types, Operations, Implementat...
Sorting and Hashing in Data Structures with Algorithms, Techniques, Implement...
Graph Data Structure Concepts with Types, Representations, Traversal Techniqu...
Application of graph ,biconnectivity FDP on DS.pptx
Real-Life Applications of Graph Data Structures in Networks, Social Media, Sh...
AVL Tree Data Structure with Insertion, Deletion, Rotations, Balancing Techni...
B Tree Data Structure Concepts with Insertion, Deletion, Searching, and Appli...
Tree Traversal Techniques in Data Structures with Inorder, Preorder, Postorde...
AVL Tree Animation with Rotations, Balancing Techniques, and Step-by-Step Ope...
Introduction to Arrays and Linked Lists with Operations, Types, and Applicati...
Ad

Recently uploaded (20)

PDF
Exploratory_Data_Analysis_Fundamentals.pdf
PDF
Level 2 – IBM Data and AI Fundamentals (1)_v1.1.PDF
PDF
Accra-Kumasi Expressway - Prefeasibility Report Volume 1 of 7.11.2018.pdf
PDF
Categorization of Factors Affecting Classification Algorithms Selection
PDF
Influence of Green Infrastructure on Residents’ Endorsement of the New Ecolog...
PDF
Visual Aids for Exploratory Data Analysis.pdf
PDF
R24 SURVEYING LAB MANUAL for civil enggi
PDF
Automation-in-Manufacturing-Chapter-Introduction.pdf
PDF
Abrasive, erosive and cavitation wear.pdf
PPTX
CURRICULAM DESIGN engineering FOR CSE 2025.pptx
PPTX
introduction to high performance computing
PPT
Occupational Health and Safety Management System
PPTX
AUTOMOTIVE ENGINE MANAGEMENT (MECHATRONICS).pptx
PDF
Artificial Superintelligence (ASI) Alliance Vision Paper.pdf
PPTX
Nature of X-rays, X- Ray Equipment, Fluoroscopy
PPTX
6ME3A-Unit-II-Sensors and Actuators_Handouts.pptx
PDF
PREDICTION OF DIABETES FROM ELECTRONIC HEALTH RECORDS
PPT
Total quality management ppt for engineering students
PDF
22EC502-MICROCONTROLLER AND INTERFACING-8051 MICROCONTROLLER.pdf
PDF
Soil Improvement Techniques Note - Rabbi
Exploratory_Data_Analysis_Fundamentals.pdf
Level 2 – IBM Data and AI Fundamentals (1)_v1.1.PDF
Accra-Kumasi Expressway - Prefeasibility Report Volume 1 of 7.11.2018.pdf
Categorization of Factors Affecting Classification Algorithms Selection
Influence of Green Infrastructure on Residents’ Endorsement of the New Ecolog...
Visual Aids for Exploratory Data Analysis.pdf
R24 SURVEYING LAB MANUAL for civil enggi
Automation-in-Manufacturing-Chapter-Introduction.pdf
Abrasive, erosive and cavitation wear.pdf
CURRICULAM DESIGN engineering FOR CSE 2025.pptx
introduction to high performance computing
Occupational Health and Safety Management System
AUTOMOTIVE ENGINE MANAGEMENT (MECHATRONICS).pptx
Artificial Superintelligence (ASI) Alliance Vision Paper.pdf
Nature of X-rays, X- Ray Equipment, Fluoroscopy
6ME3A-Unit-II-Sensors and Actuators_Handouts.pptx
PREDICTION OF DIABETES FROM ELECTRONIC HEALTH RECORDS
Total quality management ppt for engineering students
22EC502-MICROCONTROLLER AND INTERFACING-8051 MICROCONTROLLER.pdf
Soil Improvement Techniques Note - Rabbi

tack Data Structure with Array and Linked List Implementation, Push and Pop Operations, and Applications,"Queue Data Structure with Array and Linked List Implementation, Enqueue and Dequeue Operations, and Applications"

  • 1. VELAMMAL ENGINEERING COLLEGE An Autonomous Institution, Affiliated to Anna University Chennai, & Approved by AICTE Delhi Department of Computer Science and Engineering UNIT 2 -QUEUE
  • 2. Queue ADT Dr. USHA M Associate Professor Dept of CSE Velammal Engineering College VELAMMAL ENGINEERING COLLEGE An Autonomous Institution, Affiliated to Anna University Chennai, & Approved by AICTE Delhi
  • 3. Dept of CSE, Velammal Engineering College, Chennai 3 Agenda • Queue ADT • Array implementation of queue • Linked list implementation of queue • Types – Circular Queue – Double Ended Queue – Priority Queue • Applications of Queue 26/5/2020
  • 4. Dept of CSE, Velammal Engineering College, Chennai 4 Queue ADT • Linear data structure • Insertion occurs only at one end called rear • Deletion occurs only at one end called front • Element that is inserted first is deleted (FIFO principle) 26/5/2020
  • 5. Dept of CSE, Velammal Engineering College, Chennai 5 Operations in queue: • Enqueue: Inserting an element into the queue (at rear) • Dequeue: Deleting an element from the queue (at front) Exceptional Conditions: • Overflow: Attempting to insert an element into queue when it is full • Underflow: Attempting to delete an element from queue when it is empty Queue ADT 26/5/2020
  • 6. Dept of CSE, Velammal Engineering College, Chennai 6 Array Implementation of Queue Enqueue operation Void Enqueue (int num) //Let num = 12 and max=5 { if (rear==max-1) print(“Queue Overlfow”); else if (front == -1 && rear == -1) { front = rear = 0; Q[rear] = num; } else { rear++; Q[rear] = num; } } 12 25 18 26/5/2020
  • 7. Dept of CSE, Velammal Engineering College, Chennai 7 Dequeue Operation Void Dequeue() { int val; if (front == -1 || front > rear) print(“Queue Underflow”); else { val= Q[front]; front++; } } 10 20 30 26/5/2020
  • 8. Dept of CSE, Velammal Engineering College, Chennai 8 Display Operation void Display () { int i; if (front == -1 || front > rear) print (“Queue Underflow”); else { for(i=front; i<=rear; i++) print(Q[i]); } } 26/5/2020
  • 9. Dept of CSE, Velammal Engineering College, Chennai 9 Linked List Implementation of Queue Enqueue operation void Enqueue (int num) // Insert at end of linked list { n=(struct node *) malloc (sizeof (struct node)); ndata=num; nnext=NULL; if(rear == NULL) front = rear= n; else { rearnext = n; rear = n; } } 26/5/2020
  • 10. Dept of CSE, Velammal Engineering College, Chennai 10 Dequeue Operation Void Dequeue() // Delete at beginning of linked list { struct node *t; if (front == NULL) print(“Underflow”); else { t = front; front = front  next; free(t); } } 26/5/2020
  • 11. Dept of CSE, Velammal Engineering College, Chennai 11 Circular Queue • Type of queue • Last position of the queue is connected to the first position in a circular fashion • Overcome the disadvantage of wastage of front end memory space after performing dequeue operation in linear queue 26/5/2020
  • 12. Dept of CSE, Velammal Engineering College, Chennai 12 • In linear queue, after performing dequeue, the memory space at the front end remains unused • This situation does not occur in circular queue Need for Circular Queue 26/5/2020
  • 13. Dept of CSE, Velammal Engineering College, Chennai 13 Enqueue Operation void Cir_Enqueue (int num) // Let max=6 { if((front == 0 && rear == max-1) || (rear ==(front-1))) print(“Queue Overflow”); else if (front == -1 && rear == -1) { front = rear = 0; Q[rear] = num; } else if (rear == max-1 && front != 0) { rear = 0; Q[rear] = num; } else { rear ++; Q[rear] = num; } } 30 40 50 60 70 50 26/5/2020
  • 14. Dept of CSE, Velammal Engineering College, Chennai 14 Dequeue Operation Void Cir_Dequeue() { int val; if (front ==-1) print (“Queue Underflow”); val = Q[front]; if (front == rear) front = rear = – 1; else if (front == max – 1) front = 0; else front ++; } 20 40 20 30 20 30 40 front 26/5/2020
  • 15. Dept of CSE, Velammal Engineering College, Chennai 15 Double Ended Queue (DEQUE) DEQUE is of two types • Input restricted DEQUE – Insertion at only one end – Deletion at both ends • Output restricted DEQUE – Deletion at only one end – Insertion at both ends 26/5/2020
  • 16. Dept of CSE, Velammal Engineering College, Chennai 16 Priority Queue • Every item has a priority associated with it • Element with higher priority is served first • If two elements have same priority then they served according to the order in the queue • Generally, the value of the element itself is considered as higher priority • Applications: – CPU scheduling – Graph algorithms like Dijkstra’s shortest path, Prim’s minimum spanning tree, etc,. 26/5/2020
  • 17. Dept of CSE, Velammal Engineering College, Chennai 17 Applications of Queue • Data getting transferred between the IO Buffers (Input Output Buffers). • CPU scheduling and Disk scheduling. • Managing shared resources between various processes. • Job scheduling 26/5/2020
  • 18. Dept of CSE, Velammal Engineering College, Chennai 18 • Traffic light functioning is the best example for circular queues . The colors in the traffic light follow a circular pattern. • In page replacement algorithms, a circular list of pages is maintained and when a page needs to be replaced, the page in the front of the queue will be chosen. Applications of Circular Queue 26/5/2020
  • 19. UNIT 2 STACK IN DATA STRUCTURES
  • 20. STACK:DEFINITION Stack is a linear data structure which follows a particular order in which the operations are performed. The order may be LIFO(Last In First Out) or FILO(First In Last Out).
  • 21. WHY STACK? Stack in PL: • The return address (when the function is complete it returns back to the function call) • Arguments passed to the function • Local variables of the function Hardware Implementation of stack:  consists of reserved contiguous region of memory with a stack pointer into that memory.  The stack has a fixed location in memory at which it begins.  The stack pointer is a hardware register that points to the current extents of the stack.  There are stacks that grow downwards and ones that grow upwards.  The stack can technically be located anywhere in memory, depending on the system.
  • 22. WHY STACK? Usage in Microprocessors The stack shares the available RAM memory with the heap and the static memory area. The C runtime library takes care of things that need to be defined before the main() function can be executed. One of those things is setting up the stack by loading the stack pointer register with the start address of the stack. The CPU has special instructions for pushing values onto the stack and popping them back.
  • 23. Implementation of stack The stack implementation can be done using (i)Array :Array is a static data structure so the collection of data must be fixed in size. The only problem with this implementation is array size must be specified initially. struct stack { int stk[MAXSIZE]; int top; };
  • 24. • Implementation using Linked List :Linked List is a dynamic data structure. So collection of data can be used which are variable in size and structure. The program executes can grow and shrink to accommodate the data being stored. struct Node { int data; struct Node* link; }; struct Node* top;
  • 25. Drawback of Linked List implementation • All the operations take constant time • Calls to malloc and free are expensive especially in comparison to the pointer manipulation routines. Limitation of Array Implementation: The stack cannot grow and shrink dynamically as per the requirement.
  • 26. Operations on Stack The basic operations on stack are 1.Push() 2.Pop()
  • 27. Push() operation • push() function is used to insert an element at the top of the stack. • The element is added to the stack container and the size of the stack is increased by 1. Before Performing Push() operation the stack condition to be checked for overflow. int isfull() { if(top == MAXSIZE) return 1; else return 0; }
  • 29. • Step 1 − Checks if the stack is empty. • Step 2 − If the stack is empty, produces an error and exit. • Step 3 − If the stack is not empty, accesses the data element at which top is pointing. • Step 4 − Decreases the value of top by 1. • Step 5 − Returns success. int pop() { int data; if(!isempty()) { data = stack[top]; top = top - 1; return data;} else {printf("Could not retrieve data, Stack is empty.n"); }}
  • 30. Pop() operation  Deletion of an element from the top of the stack is called pop operation. The value of the variable top will be incremented by 1 whenever an item is deleted from the stack.  The top most element of the stack is stored in an another variable and then the top is decremented by 1.  The operation returns the deleted value that was stored in another variable as the result.  Before performing pop() operation the stack condition must be checked for underflow. int isempty() { if(top == -1) return 1; else return 0; }
  • 32. Applications of Stack • Evaluating Arithmetic Expression • Conversion of infix to Postfix expression • Backtracking Procedure • During Function call and return Procedure
  • 33. Evaluating Arithmetic Expression • Stack organized computers are better suited for post-fix notation than the traditional infix notation. Thus the infix notation must be converted to the post-fix notation. • Expressions are usually represented in what is known as Infix notation, in which each operator is written between two operands (i.e., A + B). • we must distinguish between ( A + B )*C and A + ( B * C ) by using either parentheses or some operator-precedence convention. • Polish notation (prefix notation) – It refers to the notation in which the operator is placed before its two operands . Here no parentheses are required, i.e., +AB
  • 34. • Reverse Polish notation(postfix notation) – It refers to the analogous notation in which the operator is placed after its two operands. Again, no parentheses is required in Reverse Polish notation, i.e., AB+ There are 3 levels of precedence for 5 binary operators Highest: Exponentiation (^) Next highest: Multiplication (*) and division (/) Lowest: Addition (+) and Subtraction (-)
  • 35. For ex: Infix notation: (A-B)*[C/(D+E)+F] Post-fix notation: AB- CDE +/F +* • We first perform the arithmetic inside the parentheses (A-B) and (D+E). • The division of C/(D+E) must done prior to the addition with F • After that multiply the two terms inside the parentheses and bracket. The procedure for getting the result is: • Convert the expression in Reverse Polish notation( post-fix notation). • Push the operands into the stack in the order they are appear. • When any operator encounter then pop two topmost operands for executing the operation. • After execution push the result obtained into the stack. • After the complete execution of expression the final result remains on the top of the stack.
  • 36. Infix notation: (2+4) * (4+6) Post-fix notation: 2 4 + 4 6 + * Result: 60
  • 37. Conversion of infix to postfix • Infix expression:The expression of the form a op b. When an operator is in-between every pair of operands. • Postfix expression:The expression of the form a b op. When an operator is followed for every pair of operands. • Why postfix representation of the expression? The compiler scans the expression either from left to right or from right to left.
  • 38. • Consider the below expression: a op1 b op2 c op3 d If op1 = +, op2 = *, op3 = + The compiler first scans the expression to evaluate the expression b * c, then again scan the expression to add a to it. The result is then added to d after another scan. The repeated scanning makes it very in-efficient. • It is better to convert the expression to postfix(or prefix) form before evaluation. • The corresponding expression in postfix form is: abc*+d+.
  • 39. Algorithm • 1. Scan the infix expression from left to right. • 2. If the scanned character is an operand, output it. • 3. Else, …..3.1 If the precedence of the scanned operator is greater than the precedence of the operator in the stack(or the stack is empty or the stack contains a ‘(‘ ), push it. …..3.2 Else, Pop all the operators from the stack which are greater than or equal to in precedence than that of the scanned operator. After doing that Push the scanned operator to the stack. (If you encounter parenthesis while popping then stop there and push the scanned operator in the stack.) • 4. If the scanned character is an ‘(‘, push it to the stack. • 5. If the scanned character is an ‘)’, pop the stack and and output it until a ‘(‘ is encountered, and discard both the parenthesis. • 6. Repeat steps 2-6 until infix expression is scanned. • 7. Print the output • 8. Pop and output from the stack until it is not empty.
  • 42. Linked List Implementation - Initial Stack
  • 44. void pop() { struct Node* temp; if (top == NULL) { printf("nStack Underflow“); exit(1); } else { temp = top; top = top->link; temp->link = NULL; free(temp); } }

Editor's Notes

  • #16: Data compression : It is used in Huffman codes which is used to compresses data. Artificial Intelligence : A* Search Algorithm : The A* search algorithm finds the shortest path between two vertices of a weighted graph, trying out the most promising routes first. The priority queue (also known as the fringe) is used to keep track of unexplored routes, the one for which a lower bound on the total path length is smallest is given highest priority.
  • #18: Pallindrome checker. A-steal job scheduling algorithm      - The A-steal algorithm implements task scheduling for multiple processors (multiprocessor scheduling).      - The processor gets the first element from the double ended queue.      - When one of the processors completes execution of its own thread, it can steal a thread from other processors.      - It gets the last element from the deque of another processor and executes it. Undo-redo operations in software applications.