Queue, Deque, and Priority Queue Implementations Chapter 14.

Slides:



Advertisements
Similar presentations
Queues Printer queues Several jobs submitted to printer Jobs form a queue Jobs processed in same order as they were received.
Advertisements

Stacks, Queues, and Linked Lists
Linear Lists – Linked List Representation
Chapter 24 Lists, Stacks, and Queues
Queue Definition Ordered list with property: –All insertions take place at one end (tail) –All deletions take place at other end (head) Queue: Q = (a 0,
Queues. Queue Definition Ordered list with property: All insertions take place at one end (tail) All insertions take place at one end (tail) All deletions.
Queues A waiting line that grows by adding elements to its end and shrinks by taking elements from its front Line at the grocery store Cars in traffic.
Chapter 17 Linked List Saurav Karmakar Spring 2007.
Queues.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 18: Stacks And Queues.
Chapter 7 Queues. Copyright © 2004 Pearson Addison-Wesley. All rights reserved.1-2 Chapter Objectives Examine queue processing Define a queue abstract.
1 CSC 211 Data Structures Lecture 22 Dr. Iftikhar Azim Niaz 1.
CSC 212 – Data Structures. Using Stack Stack Limitations  Great for Pez dispensers, JVMs,& methods  All of these use most recent item added only 
Chapter 5 Queues Modified. Chapter Scope Queue processing Comparing queue implementations 5 - 2Java Software Structures, 4th Edition, Lewis/Chase.
Dictionaries Chapter Chapter Contents Specifications for the ADT Dictionary Entries and methods Using the ADT Dictionary English Dictionary Telephone.
1 Chapter 24 Lists Stacks and Queues. 2 Objectives F To design list with interface and abstract class (§24.2). F To design and implement a dynamic list.
Completing the Linked Implementation of a List Chapter 7 Slides by Steve Armstrong LeTourneau University Longview, TX  2007,  Prentice Hall.
Queues. What is a queue? First-in first-out data structure (FIFO) New objects are placed at rear Removal restricted to front Examples?
Stack Implementations Chapter Chapter Contents A Linked Implementation An Array-Based Implementation A Vector-Based Implementation.
Queue, Deque, and Priority Queue Implementations Chapter 24 Slides by Steve Armstrong LeTourneau University Longview, TX  2007,  Prentice Hall.
Main Index Contents 11 Main Index Contents Abstract Model of a List Obj. Abstract Model of a List Obj. Insertion into a List Insertion into a List Linked.
Starting Out with C++: Early Objects 5/e © 2006 Pearson Education. All Rights Reserved Starting Out with C++: Early Objects 5 th Edition Chapter 17 Linked.
List Implementations That Link Data Chapter 6. 2 Chapter Contents Linked Data Forming a Chains The Class Node A Linked Implementation Adding to End of.
Queue, Deque, and Priority Queue Implementations.
Queue, Deque, and Priority Queue Implementations Chapter 11 Copyright ©2012 by Pearson Education, Inc. All rights reserved.
Circular queue. Array-based Queue Use an array of size N in a circular fashion Three variables keep track of the front, rear, and size f index of the.
Chapter 3: Arrays, Linked Lists, and Recursion
Chapter 14 Queues. First a Review Queue processing Using queues to solve problems – Optimizing customer service simulation – Ceasar ciphers – Palindrome.
Chapter 7 More Lists. Chapter 7: More Lists 7.1 – Circular Linked Lists 7.2 – Doubly Linked Lists 7.3 – Linked Lists with Headers and Trailers 7.4 – A.
2 Preliminaries Options for implementing an ADT List Array has a fixed size Data must be shifted during insertions and deletions Linked list is able to.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Seventh Edition by Tony Gaddis, Judy.
Copyright © 2012 Pearson Education, Inc. Chapter 18: Stacks And Queues.
Copyright 2003 Scott/Jones Publishing Standard Version of Starting Out with C++, 4th Edition Chapter 18 Stacks and Queues.
Stacks And Queues Chapter 18.
Starting Out with C++ Early Objects Seventh Edition by Tony Gaddis, Judy Walters, and Godfrey Muganda Chapter 17: Linked Lists.
Copyright © 2012 Pearson Education, Inc. Chapter 17: Linked Lists.
Kovács Zita 2014/2015. II. félév DATA STRUCTURES AND ALGORITHMS 26 February 2015, Linked list.
Question of the Day  Three people check into a hotel for which they pay the manager $30. The manager finds out the rate is $25 and gives $5 to the bellboy.
Queues. Like Stacks, Queues are a special type of List for storing collections of entities. Stacks are Lists where insertions (pushes) and deletions (pops)
Stack Implementations Chapter 6 Copyright ©2012 by Pearson Education, Inc. All rights reserved.
Question of the Day  How can you change the position of 1 toothpick and leave the giraffe in exactly the same form, but possibly mirror-imaged or oriented.
Queue. Avoid confusion Britain Italy 6 Applications of Queues Direct applications –Waiting lists, bureaucracy –Access to shared resources (e.g.,
CS 201 Data Structures and Algorithms Chapter 3: Lists, Stacks, and Queues - I Text: Read Weiss, §3.1 – 3.5 1Izmir University of Economics.
Linear Data Structures
2005MEE Software Engineering Lecture 7 –Stacks, Queues.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Seventh Edition by Tony Gaddis, Judy.
Queue, Deque, and Priority Queue Implementations Chapter 23.
Question of the Day  How can you change the position of 1 toothpick and leave the giraffe in exactly the same form, but possibly mirror-imaged or oriented.
CS162 - Topic #7 Lecture: Dynamic Data Structures –Review of pointers and the new operator –Introduction to Linked Lists –Begin walking thru examples of.
Sorted Lists Chapter Chapter Contents Specifications for the ADT Sorted List Using the ADT Sorted List A Linked Implementation The Method add The.
Queues CS 367 – Introduction to Data Structures. Queue A queue is a data structure that stores data in such a way that the last piece of data stored,
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Seventh Edition by Tony Gaddis, Judy.
Copyright © 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Eighth Edition by Tony Gaddis,
CMSC 202 Computer Science II for Majors. CMSC 202UMBC Topics Templates Linked Lists.
LINKED LISTS.
Queues and Priority Queue Implementations Chapter 14 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013.
© Oxford University Press All rights reserved. Data Structures Using C, 2e Reema Thareja.
Data Structures Using C, 2e
Lectures Queues Chapter 8 of textbook 1. Concepts of queue
Queue, Deque, and Priority Queue Implementations
Queue, Deque, and Priority Queue Implementations
Queue and Priority Queue Implementations
A List Implementation That Links Data
Cs212: Data Structures Computer Science Department Lecture 7: Queues.
CS210- Lecture 5 Jun 9, 2005 Agenda Queues
Circular Queues: Implemented using Arrays
Lecture 6: Linked Data Structures
Queues: Implemented using Linked Lists
A List Implementation That Links Data
Queue, Deque, and Priority Queue Implementations
Presentation transcript:

Queue, Deque, and Priority Queue Implementations Chapter 14

2 Chapter Contents A Linked List Implementation of a Queue An Array-Based Implementation of a Queue A Circular Array A Circular Array with One Unused Location A Vector-Based Implementation of a Queue Circular Linked Implementations of a Queue A Two-Part Circular Linked Chain A Doubly Linked Implementation of a Queue Possible Implementations of a Priority Queue

3 A Linked Implementation of a Queue Use chain of linked nodes for the queue Two ends at opposite ends of chain Accessing last node inefficient with only head reference Could keep a reference to the tail of the chain With references to both Place front of queue at beginning of chain Place back of queue at end of chain Remove the head is easy, remove the end requires traverse.

4 A Linked Implementation of a Queue A chain of linked nodes that implements a queue. Front of queue Back of queue

5 A Linked Implementation of a Queue (a)Before adding a new node to an empty chain; (b) after adding to it. Both firstNode and lastNode points to the new node.

6 A Linked Implementation of a Queue (a)Before adding a new node to the end of a chain; (b) after adding it.

7 A Linked Implementation of a Queue (a)A queue of more than one entry; (b) after removing the queue's front.

8 A Linked Implementation of a Queue (a) A queue of one entry; (b) after removing the queue's front. firstNode and lastNode both point to null

9 Array-Based Implementation of a Queue Initially, let queue[0] be the front frontIndex, backIndex are indices of front and back If we insist queue[0] is front Must shift entries when we remove the front Instead, we move frontIndex Problem then is array can become full But now beginning of array could be empty and available for use

10 Array-Based Implementation of a Queue An array that represents a queue without shifting its entries: (a) initially; (b) after removing the front twice;

11 Array-Based Implementation of a Queue An array that represents a queue without shifting its entries: (c) after several more additions & removals; (d) after two additions that wrap around to the beginning of the array

12 A Circular Array When queue reaches end of array Add subsequent entries to beginning Array behaves as though it were circular First location follows last one Use modulo arithmetic on indices backIndex = (backIndex + 1) % queue.length

13 A Circular Array A circular array that represents a queue: (a) when full; (b) after removing 2 entries; (c) after removing 3 more entries;

14 A Circular Array A circular array that represents a queue: (d) after removing all but one entry; (e) after removing remaining entry. Note: with circular array frontIndex == backIndex + 1 both when queue is empty and when full

15 A Circular Array with One Unused Location A seven-location circular array that contains at most six entries of a queue … continued → Allows us to distinguish between empty and full queue by examining frontIndex and backIndex

16 A Circular Array with One Unused Location (ctd.) A seven-location circular array that contains at most six entries of a queue.

17 A Circular Array with One Unused Location When the array is full, the index of the unused location is 1 more than backIndex and 1 less than frontIndex. The frontIndex == (backIndex +2) % queue.length When the array is empty, the frontIndex == (backIndex + 1) % queue.length

18 Array-Based Implementation of a Queue An array-base queue: (a) initially; (b) after removing its front by incrementing frontIndex ;

19 Array-Based Implementation of a Queue An array-base queue: (c) after removing its front by setting queue[frontIndex] to null and then incrementing frontIndex.

20 Vector-Based Implementation of a Queue Maintain front of queue at beginning of vector Use addElement(newEntry) method to add entry at back Vector expands as necessary When remove front element remove(0) method, remaining elements move so new front is at beginning of vector Indexes at front and back not needed

21 Vector-Based Implementation of a Queue A vector that represents a queue.

22 Circular Linked Implementations of a Queue Last node references first node Now we have a single reference to last node And still locate first node quickly by calling lastNode.getNextNode() No node contains a null When a class uses circular linked chain for queue Only one data item in the class The reference to the chain's last node

23 Circular Linked Implementations of a Queue A circular linked chain with an external reference to its last node that (a) has more than one node; (b) has one node; (c) is empty.

24 A Two-Part Linked Chain Linked nodes that form the queue followed by linked nodes available for use in the queue queueNode references front of queue node freeNode references first available node following end of queue In essence we have two chains One for the queue One for available nodes All joined in a circle

25 A Two-Part Linked Chain A two-part circular linked chain that represents both a queue and the nodes available to the queue. Borrow the concept from circular array: addition and removals occur at ends, so it results in contiguous locations for queue elements after addition, and contiguous available locations after removals.

26 A Two-Part Linked Chain A two-part circular linked chain that represents a queue: (a) when it is empty; (b) after adding one entry; (c) after adding three more entries

27 A Two-Part Linked Chain A two-part circular linked chain that represents a queue: (d) after removing the front; (e) after adding one more entry If chain is not full, use freeNode to contain the new entry. freeNode references the next node

28 A Two-Part Linked Chain A chain that requires a new node for an addition to a queue: (a) before the addition; (b) after the addition. Again a queue always has at least one unused element for freeNode to point to.

29 A Two-Part Linked Chain A chain with a node available for an addition to a queue: (a) before the addition; (b) after the addition.

30 Why Two-Part Linked Chain The available nodes are not allocated all at once the way locations are allocated for an array. Initially no available nodes; we allocate a node each time we add a new entry. When remove an entry, keep its node in the circle rather than deallocating it for later addition If no available nodes, allocate a new node and link it into the chain.

31 Choosing Linked Implementation You can use a linear chain Or you can use a circular chain Both of these implementations requires disconnection and deallocation of a node when removing a node. If, after removing entries from the queue, you seldom add entries, these are fine. But if you frequently add an entry after removing one, the two-part circular chain saves the time of deallocating and reallocating nodes.

32 A Doubly Linked Implementation of a Deque Chain with head reference enables reference of first and then the rest of the nodes Tail reference allows reference of last node but not next-to-last We need nodes that can reference both Previous node Next node For remove action to occur at the end of chain, thus the doubly linked chain

33 A Doubly Linked Implementation of a Deque A doubly linked chain with head and tail references

34 A Doubly Linked Implementation of a Deque Adding to the back of a non empty deque: (a) after the new node is allocated; (b) after the addition is complete.

35 Method Examples: addToBack Public void addToBack( T newEntry) { DLNode newNode = new DLNode(lastNode, newEntry, null); if( isEmpty()) firstNode = newNode; else lastNode.setNextNode(newNode); lastNode = newNode; }

36 removeBack Method Public T removeBack() { T back = null; if( !isEmpty()) { back = lastNode.getData(); lastNode = lastNode.getPreviousNode(); if( lastNode == null) firstNode = null; else lastNode.setNextNode(null); } return back; }

37 A Doubly Linked Implementation of a Deque (a) a deque containing at least two entries; (b) after removing first node and obtaining reference to the deque's first entry.

38 Possible Implementations of a Priority Queue Two possible implementations of a priority queue using (a) a sorted array; (b) a sorted chain of linked nodes. End of array and head of chain as queue head, since it is easy for remove action