DATA STRUCTURE & ALGORITHMS

Slides:



Advertisements
Similar presentations
DATA STRUCTURES USING C++ Chapter 5
Advertisements

Ceng-112 Data Structures I Chapter 5 Queues.
Data Structures Lecture 13: QUEUES Azhar Maqsood NUST Institute of Information Technology (NIIT)
COSC 1P03 Data Structures and Abstraction 9.1 The Queue Whenever you are asked if you can do a job, tell 'em, "Certainly, I can!" Then get busy and find.
Fundamentals of Python: From First Programs Through Data Structures
Data Structure Dr. Mohamed Khafagy.
Jerry Lebowitz.  Stacks  Queues 3 C++ Programming: From Problem Analysis to Program Design, Sixth Edition.
C++ Programming: Program Design Including Data Structures, Third Edition Chapter 17: Linked Lists.
Summary of lectures (1 to 11)
C++ Programming: Program Design Including Data Structures, Fifth Edition Chapter 17: Linked Lists.
Chapter 18: Stacks and Queues
Queues Chapter 8 Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved
Chapter 18: Stacks and Queues
Data Structures Using C++ 2E
Chapter 14 Queues. First a Review Queue processing Using queues to solve problems – Optimizing customer service simulation – Ceasar ciphers – Palindrome.
Chapter 17: Stacks and Queues
Data Structures Using C++ 2E Chapter 7 Stacks. Data Structures Using C++ 2E2 Objectives Learn about stacks Examine various stack operations Learn how.
TK1924 Program Design & Problem Solving Session 2011/2012 L6: Queues.
DATA STRUCTURE & ALGORITHMS CHAPTER 3: STACKS. 2 Objectives In this chapter, you will: Learn about stacks Examine various stack operations Discover stack.
Adapted from instructor resources Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights.
1 CS 132 Spring 2008 Chapter 8 Queues. 2 Queue A data structure in which the elements are added at one end, called the rear, and deleted from the other.
Data Structures Using C++ 2E Chapter 8 Queues. Data Structures Using C++ 2E2 Objectives Learn about queues Examine various queue operations Learn how.
C++ Programming: Program Design Including Data Structures, Fourth Edition Chapter 18: Stacks and Queues (part 3)
Chapter 18: Stacks and Queues
1 Stacks and Queues Based on D.S. Malik, Java Programming: Program Design Including Data Structures.
Data Structures Using Java1 Chapter 7 Queues. Data Structures Using Java2 Chapter Objectives Learn about queues Examine various queue operations Learn.
Data Structures Using C++
Stacks and Queues Based on D.S. Malik, Java Programming: Program Design Including Data Structures.
C++ Programming: Program Design Including Data Structures, Fourth Edition Chapter 18: Stacks and Queues.
C++ Programming: From Problem Analysis to Program Design, Fourth Edition Chapter 19: Stacks and Queues.
C++ Programming: Program Design Including Data Structures, Fourth Edition Chapter 18: Stacks and Queues.
C++ Programming: From Problem Analysis to Program Design, Fourth Edition Chapter 19: Stacks and Queues (part 2)
Stacks And Queues Chapter 18.
1 Linked-list, stack and queue. 2 Outline Abstract Data Type (ADT)‏ Linked list Stack Queue.
Scis.regis.edu ● CS-362: Data Structures Week 8 Dr. Jesús Borrego 1.
Implementation of QUEUE For more notes and topics visit: eITnotes.com.
Queue 09/10/081. Queue (Linear Queue) It is a linear data structure consisting of list of items. In queue, data elements are added at one end, called.
C++ Programming: Program Design Including Data Structures, Fourth Edition Chapter 17: Linked Lists (part 2)
C++ Programming: From Problem Analysis to Program Design, Fourth Edition Chapter 18: Linked Lists (part 2)
1 Chapter 17: Stacks and Queues Learn about stacks Examine various stack operations Learn how to implement a stack as an array Learn how to implement a.
Chapter 17: Stacks and Queues. Objectives In this chapter, you will: – Learn about stacks – Examine various stack operations – Learn how to implement.
Chapter 17: Linked Lists. Objectives In this chapter, you will: – Learn about linked lists – Learn the basic properties of linked lists – Explore insertion.
C++ Programming: Program Design Including Data Structures, Fourth Edition Chapter 17: Linked Lists.
C++ Programming: From Problem Analysis to Program Design, Fourth Edition Chapter 18: Linked Lists.
© Oxford University Press All rights reserved. Data Structures Using C, 2e Reema Thareja.
Chapter 17: Stacks and Queues Java Programming: Program Design Including Data Structures Program Design Including Data Structures.
Chapter 16: Linked Lists.
Data Structures Using C++ 2E
Review Array Array Elements Accessing array elements
C++ Programming:. Program Design Including
Data Structures Using C++ 2E
Data Structures Using C, 2e
Queues.
Queues Chapter 4.
QUEUES.
Queues.
Lectures Queues Chapter 8 of textbook 1. Concepts of queue
Stacks and Queues.
Queues Queues Queues.
Queues Chapter 4.
Queues Chapter 8 Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved
CMSC 341 Lecture 5 Stacks, Queues
Pointers and Linked Lists
DATA STRUCTURE QUEUE.
Cs212: Data Structures Computer Science Department Lecture 7: Queues.
Using a Queue Chapter 8 introduces the queue data type.
Using a Queue Chapter 8 introduces the queue data type.
CSC 248 – fundamentals of Data structure
Data Structures Using C++ 2E
Getting queues right … finally (?)
Presentation transcript:

DATA STRUCTURE & ALGORITHMS CHAPTER 4: QUEUE

Queues Queue: list of homogeneous elements Elements are: Added at one end (the back or rear) Deleted from the other end (the front) First In First Out (FIFO) data structure Middle elements are inaccessible Example: Waiting line in a bank

Queue Operations Some of the queue operations are: initializeQueue isEmptyQueue isFullQueue front back addQueue deleteQueue Abstract class queueADT defines these operations

Implementation of Queues as Arrays You need at least four (member) variables: An array to store the queue elements queueFront and queueRear To keep track of first and last elements maxQueueSize To specify the maximum size of the queue

Implementation of Queues as Arrays (continued) To add an element to the queue: Advance queueRear to next array position Add element to position pointed by queueRear Example: array size is 100; originally empty

Implementation of Queues as Arrays (continued) To delete an element from the queue: Retrieve element pointed to by queueFront Advance queueFront to next queue element

Implementation of Queues as Arrays (continued) Will this queue design work? Suppose A stands for adding an element to the queue And D stands for deleting an element from the queue Consider the following sequence of operations: AAADADADADADADADA...

Implementation of Queues as Arrays (continued) The sequence AAADADADADADADADA... would eventually set queueRear to point to the last array position Giving the impression that the queue is full

Implementation of Queues as Arrays (continued) Solution 1: When the queue overflows to the rear (i.e., queueRear points to the last array position): Check value of queueFront If value of queueFront indicates that there is room in the front of the array, slide all of the queue elements toward the first array position Problem: too slow for large queues Solution 2: assume that the array is circular

Implementation of Queues as Arrays (continued) To advance the index in a (logically) circular array:

Implementation of Queues as Arrays (continued)

Implementation of Queues as Arrays (continued) Case 1:

Implementation of Queues as Arrays (continued) Case 2: C++ Programming: Program Design Including Data Structures, Fourth Edition

Implementation of Queues as Arrays (continued) Problem: Figures 18-47 and 18-49 have identical values for queueFront and queueRear However, the former represents an empty queue, whereas the latter shows a full queue Solution?

Implementation of Queues as Arrays (continued) Solution 1: keep a count Incremented when a new element is added to the queue Decremented when an element is removed Initially, set to 0 Very useful if user (of queue) frequently needs to know the number of elements in the queue We will implement this solution

Implementation of Queues as Arrays (continued) Solution 2: let queueFront indicate index of the array position preceding the first element queueRear still indicates index of last one Queue empty if: queueFront == queueRear Slot indicated by queueFront is reserved Queue can hold 99 (not 100) elements Queue full if the next available space is the reserved slot indicated by queueFront

Implementation of Queues as Arrays (continued)

Exercise Consider the following queue where circular QUEUE is allocated 6 memory cells: FRONT = 2, REAR = 5 QUEUE: _______, London, Berlin, Rome, Paris, _______ Describe the queue, including FRONT and REAR, as the following operations take place: Athens is added Two cities are deleted Madrid is added Moscow is added Three cities are deleted Oslo is added

Empty Queue and Full Queue

Initialize Queue

Front Returns the first element of the queue

Back Returns the last element of the queue

addQueue

deleteQueue

Constructors and Destructors

Constructors and Destructors (continued) The array to store the queue elements is created dynamically When the queue object goes out of scope, the destructor simply deallocates the memory occupied by the array

Linked Implementation of Queues Array size is fixed: only a finite number of queue elements can be stored in it The array implementation of the queue requires array to be treated in a special way Together with queueFront and queueRear The linked implementation of a queue simplifies many of the special cases of the array implementation In addition, the queue is never full

Linked Implementation of Queues (continued) Elements are added at one end and removed from the other We need to know the front of the queue and the rear of the queue Two pointers: queueFront and queueRear

Empty and Full Queue The queue is empty if queueFront is NULL The queue is never full

Initialize Queue Initializes queue to an empty state Must remove all the elements, if any

addQueue

front and back Operations

deleteQueue

Default Constructor

Queue Derived from the class unorderedLinkedListType The linked implementation of a queue is similar to the implementation of a linked list created in a forward manner addQueue is similar to insertFirst initializeQueue is like initializeList isEmptyQueue is similar to isEmptyList deleteQueue can be implemented as before queueFront is the same as first queueRear is the same as last

Application of Queues: Simulation Simulation: a technique in which one system models the behavior of another system Computer simulations using queues as the data structure are called queuing systems

Summary (continued) Queue: items are added at one end and removed from the other end First In First Out (FIFO) data structure Operations: add, remove, initialize, destroy, check if queue is empty/full Can be implemented as array or linked list Middle elements should not be accessed Restricted versions of arrays and linked lists