Queues What is a queue? Queue Implementations: As Array

Slides:



Advertisements
Similar presentations
© 2004 Goodrich, Tamassia Queues1. © 2004 Goodrich, Tamassia Queues2 The Queue ADT (§4.3) The Queue ADT stores arbitrary objects Insertions and deletions.
Advertisements

A queue is a linear, homogeneous, container that stores and dispenses its content in a FIFO manner. FIFO - First In First Out The first (most distant)
Queues1 Part-B2 Queues. Queues2 The Queue ADT (§4.3) The Queue ADT stores arbitrary objects Insertions and deletions follow the first-in first-out scheme.
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.
Queues 4/14/2017 5:24 PM 5.2 Queues Queues Dr Zeinab Eid.
1 Queues (5.2) CSE 2011 Winter May Announcements York Programming Contest Link also available from.
© 2004 Goodrich, Tamassia Stacks. © 2004 Goodrich, Tamassia Stacks2 The Stack ADT (§4.2) The Stack ADT stores arbitrary objects Insertions and deletions.
Queues. What is a queue? First-in first-out data structure (FIFO) New objects are placed at rear Removal restricted to front Examples?
Queues What are queues? Queue Implementation Using Linked Lists. Applications of Queues.
Introduction to Stacks What is a Stack Stack implementation using arrays. Application of Stack.
Queues. What is a queue? First-in first-out data structure (FIFO) New objects are placed at rear Removal restricted to front Examples?
Queues.
Introduction to Stacks What is a Stack Stack implementation using array. Stack implementation using linked list. Applications of Stack.
Queues What is a queue? Queue Implementations: –As Array –As Circular Array –As Linked List Applications of Queues. Priority queues.
1 Introduction to Stacks What is a Stack? Stack implementation using array. Stack implementation using linked list. Applications of Stacks.
1 Foundations of Software Design Fall 2002 Marti Hearst Lecture 13: Queues and Vectors.
© 2004 Goodrich, Tamassia Queues1. © 2004 Goodrich, Tamassia Queues2 The Queue ADT (§4.3) The Queue ADT stores arbitrary objects Insertions and deletions.
Queues What is a Queue? Queue Implementations: Queue As Array
CSE 373 Data Structures and Algorithms Lecture 2: Queues.
Stacks. week 2a2 Outline and Reading The Stack ADT (§4.1) Applications of Stacks Array-based implementation (§4.1.2) Growable array-based stack Think.
Ics202 Data Structures. U n i v e r s i t y o f H a i l 1. Stacks top push (8)push (2)
Queues by Dr. Bun Yue Professor of Computer Science CSCI 3333 Data Structures.
A queue is a linear, homogeneous, container that stores and dispenses its content in a FIFO manner. FIFO - Fast In First Out The first (most distant) item.
Lecture7: Queue Bohyung Han CSE, POSTECH CSED233: Data Structures (2014F)
Chapter Objectives  Learn how to represent a waiting line (queue)  Become proficient using the methods in the Queue  Understand how to implement the.
CSE 373: Data Structures and Algorithms Lecture 2: Queues.
Queue. Avoid confusion Britain Italy 6 Applications of Queues Direct applications –Waiting lists, bureaucracy –Access to shared resources (e.g.,
Queue. The Queue ADT Insertions and deletions follow the first-in first-out scheme Insertions are at the rear of the queue and removals are at the front.
Give Eg:? Queues. Introduction DEFINITION: A Queue is an ordered collection of element in which insertions are made at one end and deletions are made.
CH 5 : STACKS, QUEUES, AND DEQUES ACKNOWLEDGEMENT: THE SLIDES ARE PREPARED FROM SLIDES PROVIDED WITH DATA STRUCTURES AND ALGORITHMS IN C++, GOODRICH, TAMASSIA.
U n i v e r s i t y o f H a i l 1 ICS 202  2011 spring  Data Structures and Algorithms 
Queues By Jimmy M. Lu. Overview Definition Standard Java Queue Operations Implementation Queue at Work References.
© 2004 Goodrich, Tamassia Queues. © 2004 Goodrich, Tamassia Stacks2 The Queue ADT The Queue ADT stores arbitrary objects Insertions and deletions follow.
Queues1 © 2014 Goodrich, Tamassia, Goldwasser Presentation for use with the textbook Data Structures and Algorithms in Java, 6 th edition, by M. T. Goodrich,
Linked Data Structures
Review Array Array Elements Accessing array elements
Queues.
Queues 5/11/2018 Presentation for use with the textbook Data Structures and Algorithms in Java, 6th edition, by M. T. Goodrich, R. Tamassia, and M. H.
Queues Rem Collier Room A1.02
Recap: Solution of Last Lecture Activity
CSE 373: Data Structures and Algorithms
Queues Queues Queues.
Algorithms and Data Structures
Queues 11/9/2018 6:28 PM Queues 11/9/2018 6:28 PM Queues.
Queues 11/9/2018 6:32 PM Queues.
THURSDAY, OCTOBER 17 IN LAB
Queues 11/16/2018 4:18 AM Queues 11/16/2018 4:18 AM Queues.
Queues 11/16/2018 4:19 AM Queues 11/16/2018 4:19 AM Queues.
Circular queue.
Queues.
Queue.
Queues 11/22/2018 6:47 AM 5.2 Queues Queues Dr Zeinab Eid.
Lecture 5 Stacks King Fahd University of Petroleum & Minerals
COMPUTER 2430 Object Oriented Programming and Data Structures I
Queues 12/3/2018 Queues © 2014 Goodrich, Tamassia, Goldwasser Queues.
Queues 3/9/15 Presentation for use with the textbook Data Structures and Algorithms in Java, 6th edition, by M. T. Goodrich, R. Tamassia, and M. H. Goldwasser,
Queues 12/30/2018 9:24 PM Queues 12/30/2018 9:24 PM Queues.
Stack A data structure in which elements are inserted and removed only at one end (called the top). Enforces Last-In-First-Out (LIFO) Uses of Stacks Evaluating.
Recall What is a Data Structure Very Fundamental Data Structures
CS210- Lecture 5 Jun 9, 2005 Agenda Queues
Queues What is a Queue? Queue Implementations: As Array
Queues Jyh-Shing Roger Jang (張智星)
Copyright © Aiman Hanna All rights reserved
Chapter 4 Queues.
Introduction to Stacks
CE 221 Data Structures and Algorithms
Introduction to Stacks
CSC 248 – fundamentals of Data structure
Queues What is a queue? Queue Implementations: As Array
Data Structures & Programming
Presentation transcript:

Queues What is a queue? Queue Implementations: As Array As Circular Array As Linked List Applications of Queues. Priority queues COSC 301: Data Structures

What is a queue? Queues are linear data structures in which we add elements to one end and remove them from the other end. The first item to be en-queued is the first to be de-queued. Queue is therefore called a First In First Out (FIFO) structure. Queue operations: Enqueue Dequeue GetHead COSC 301: Data Structures

What is a queue? Rear Front 3 1 4 Given the following Queue, how will it change when we apply the given operations? enqueue(1); 3 1 4 enqueue(5); 3 1 4 5 dequeue(); 1 4 5 dequeue(); 4 1 5 dequeue(); 1 5 COSC 301: Data Structures

Queue Implementation In our implementation, a queue is a container that extends the AbstractContainer class and implements the Queue interface. We provide three implementations for Queue QueueAsArray QueueAsCircularArray QueueAsLinkedList public interface Queue extends Container{ public abstract Object getHead(); public abstract void enqueue(Object obj); public abstract Object dequeue(); } COSC 301: Data Structures

QueueAsArray Complexity is O(n) public class QueueAsArray extends AbstractContainer implements Queue { protected Object[] array; protected int rear = 0; protected int size; public QueueAsArray(int size) { array = new Object[size]; this.size = size; } public void purge(){ int index = 0; while(count > 0){ array[index] = null; index++; count--; rear = 0; Complexity is O(n) COSC 301: Data Structures

QueueAsArray (Cont.) public Object getHead(){ if(count == 0) throw new ContainerEmptyException(); else return array[0]; } public void enqueue(Object obj){ if(count == size){ throw new ContainerFullException(); else{ array[rear++] = obj; count++; Complexity is O(1) Complexity is O(1) COSC 301: Data Structures

QueueAsArray (Cont.) public Object dequeue(){ if(count == 0) throw new ContainerEmptyException(); else { Object obj = array[0]; count--; for(int k = 1; k <= count; k++) array[k - 1] = array[k]; rear--; return obj; } Complexity is O(n) COSC 301: Data Structures

QueueAsArray (Cont.) public Iterator iterator() { return new Iterator() { int index = 0; public boolean hasNext(){ return index < count; } public Object next(){ if(index == count) throw new NoSuchElementException(); else { Object obj = array[index++]; return obj; }; COSC 301: Data Structures

QueueAsCircularArray Implementation By using modulo arithmetic for computing array indexes, we can have a queue implementation in which each of the operations enqueue, dequeue, and getHead has complexity O(1) Enqueue(“P”) will result in … COSC 301: Data Structures

QueueAsCircularArray Implementation (Cont.) Dequeue() will result in COSC 301: Data Structures

QueueAsCircularArray public class QueueAsCircularArray extends AbstractContainer implements Queue { protected Object[] array; protected int front = 0; protected int rear = 0; protected int size; public QueueAsCircularArray(int size) { array = new Object[size]; this.size = size; } public void purge(){ int index = front; while(count > 0){ array[index] = null; index = (index + 1) % size; count--; front = rear = 0; Complexity is O(n) COSC 301: Data Structures

QueueAsCircularArray public Object getHead(){ if(count == 0) throw new ContainerEmptyException(); else return array[front]; } public void enqueue(Object obj){ if(count == size) throw new ContainerFullException(); else { array[rear] = obj; rear = (rear + 1) % size; count++; public Object dequeue(){ if(count == 0)throw new ContainerEmptyException(); Object obj = array[front]; front = (front + 1) % size; count--; return obj; Complexity is O(1) Complexity is O(1) Complexity is O(1) COSC 301: Data Structures

QueueAsCircularArray public Iterator iterator(){ return new Iterator() { int index = front; int counter = 0; public boolean hasNext(){ return counter < count; } public Object next(){ if(counter == count) throw new NoSuchElementException(); else { Object obj = array[index]; index = (index + 1) % size; counter++; return obj; }; COSC 301: Data Structures

QueueAsLinkedList Complexity is O(1) Complexity is O(1) public class QueueAsLinkedList extends AbstractContainer implements Queue { protected MyLinkedList list; public QueueAsLinkedList(){list = new MyLinkedList();} public void purge(){ list.purge(); count = 0; } public Object getHead(){ if(count == 0) throw new ContainerEmptyException(); else return list.getFirst(); Complexity is O(1) Complexity is O(1) COSC 301: Data Structures

QueueAsLinkedList public void enqueue(Object obj){ list.append(obj); count++; } public Object dequeue(){ if(count == 0) throw new ContainerEmptyException(); else { Object obj = list.getFirst(); list.extractFirst(); count--; return obj; Complexity is O(1) Complexity is O(1) COSC 301: Data Structures

QueueAsLinkedList public Iterator iterator() { return new Iterator() { MyLinkedList.Element position = list.getHead(); public boolean hasNext(){ return position != null; } public Object next(){ if(position == null) throw new NoSuchElementException(); else{ Object obj = position.getData(); position = position.getNext(); return obj; }; COSC 301: Data Structures

Application of Queues Direct applications Waiting lines: Queues are commonly used in systems where waiting line has to be maintained for obtaining access to a resource. For example, an operating system may keep a queue of processes that are waiting to run on the CPU. Access to shared resources (e.g., printer) Multiprogramming Indirect applications Auxiliary data structure for algorithms Component of other data structures COSC 301: Data Structures

Priority Queues In a normal queue the enqueue operation adds an item at the back of the queue, and the dequeue operation removes an item at the front of the queue. A priority queue is a queue in which the dequeue operation removes an item at the front of the queue; but the enqueue operation insert items according to their priorities. A higher priority item is always enqueued before a lower priority element. An element that has the same priority as one or more elements in the queue is enqueued after all the elements with that priority. COSC 301: Data Structures