90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. 1 Lecture 5: Stacks and Queues.

Slides:



Advertisements
Similar presentations
Data Structures Through C
Advertisements

Stack & Queues COP 3502.
Data Structures Lecture 13: QUEUES Azhar Maqsood NUST Institute of Information Technology (NIIT)
Data Structures and Algorithms (60-254)
Stacks, Queues, and Deques. 2 A stack is a last in, first out (LIFO) data structure Items are removed from a stack in the reverse order from the way they.
queues1 Queues Data structures that wait their turn.
Stacks  a data structure which stores data in a Last-in First-out manner (LIFO)  has a pointer called TOP  can be implemented by either Array or Linked.
CS 206 Introduction to Computer Science II 03 / 04 / 2009 Instructor: Michael Eckmann.
Queues CS-212 Dick Steflik. Queues First In, First Out operation – FIFO As items are added they are chronologically ordered, items are removed in their.
Chapter 7 Queues. Data Structure 2 Chapter Outline  Objectives  Follow and explain queue-based algorithms using the front, rear, entering the queue,
CSC 212 – Data Structures. Using Stack Stack Limitations  Great for Pez dispensers, JVMs,& methods  All of these use most recent item added only 
 Abstract Data Type Abstract Data Type  What is the difference? What is the difference?  Stacks Stacks  Stack operations Stack operations  Parsing.
Queue RIZWAN REHMAN CENTRE FOR COMPUTER STUDIES DIBRUGARH UNIVERSITY.
CS 106 Introduction to Computer Science I 12 / 06 / 2006 Instructor: Michael Eckmann.
Data Structures: Lists i206 Fall 2010 John Chuang Some slides adapted from Glenn Brookshear, Brian Hayes, or Marti Hearst.
CS 206 Introduction to Computer Science II 03 / 06 / 2009 Instructor: Michael Eckmann.
CS 206 Introduction to Computer Science II 10 / 17 / 2008 Instructor: Michael Eckmann.
CS 206 Introduction to Computer Science II 10 / 20 / 2008 Instructor: Michael Eckmann.
CS 206 Introduction to Computer Science II 10 / 15 / 2008 Instructor: Michael Eckmann.
CS 206 Introduction to Computer Science II 10 / 26 / 2009 Instructor: Michael Eckmann.
COMP 110 Introduction to Programming Mr. Joshua Stough.
Stack: Linked List Implementation Push and pop at the head of the list New nodes should be inserted at the front of the list, so that they become the top.
TCSS 342, Winter 2005 Lecture Notes
CS 106 Introduction to Computer Science I 12 / 13 / 2006 Instructor: Michael Eckmann.
Stacks, Queues, and Deques. A stack is a last in, first out (LIFO) data structure –Items are removed from a stack in the reverse order from the way they.
CS 206 Introduction to Computer Science II 10 / 28 / 2009 Instructor: Michael Eckmann.
© 2004 Pearson Addison-Wesley. All rights reserved12-1 Chapter 12 : Collections Intermediate Java Programming Summer 2007.
The Stack and Queue Types Lecture 10 Hartmut Kaiser
Objectives of these slides:
CHAPTER 05 Compiled by: Dr. Mohammad Omar Alhawarat Stacks & Queues.
ISOM MIS 215 Module 3 – Stacks and Queues. ISOM Where are we? 2 Intro to Java, Course Java lang. basics Arrays Introduction NewbieProgrammersDevelopersProfessionalsDesigners.
Stacks and Queues Introduction to Computing Science and Programming I.
Adapted from instructor resources Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights.
DATA STRUCTURES AND ALGORITHMS Lecture Notes 4 Prepared by İnanç TAHRALI.
1/ 124 COP 3503 FALL 2012 SHAYAN JAVED LECTURE 18 Programming Fundamentals using Java 1.
LECTURE 26: QUEUES CSC 212 – Data Structures. Using Stack.
A data structure is a type of data storage ….similar to an array. There are many data structures in Java (Stacks, Queues, LinkedList, Sets, Maps, HashTables,
COP INTERMEDIATE JAVA Data Structures. A data structure is a way of organizing a collection of data so that it can be manipulated effectively. A.
Foundation of Computing Systems Lecture 3 Stacks and Queues.
Stacks And Queues Chapter 18.
CSS446 Spring 2014 Nan Wang  Java Collection Framework ◦ Stack ◦ Queue & Priority Queue 2.
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.
(c) , University of Washington19a-1 CSC 143 Stacks and Queues: Concepts and Implementations.
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.
Chapter 7 Queues Introduction Queue applications Implementations.
2005MEE Software Engineering Lecture 7 –Stacks, Queues.
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.
CSCI 62 Data Structures Dr. Joshua Stough October 7, 2008.
Data Structures David Kauchak cs302 Spring Data Structures What is a data structure? Way of storing data that facilitates particular operations.
Stacks and Queues CMSC 201. Stacks and Queues Sometimes, when we use a data-structure in a very specific way, we have a special name for it. This is to.
3/3/20161 Stacks and Queues Introduction to Data Structures Ananda Gunawardena.
Lecture 21 Data Structures, Algorithms and Complexity Stacks and Queues GRIFFITH COLLEGE DUBLIN.
Spring 2008 Mark Fontenot CSE Honors Principles of Computer Science I Note Set 15 1.
1 Data Structures CSCI 132, Spring 2014 Lecture 7 Queues.
Data Structures and Algorithms Lists, Stacks, Queues, and Graphs Sorting and searching algorithms.
Queue ADT for lining up politely. COSC 2006 queue2 Queue – simple collection class  first-in first-out (FIFO) structure insert new elements at one end.
1 Lecture 9: Stack and Queue. What is a Stack Stack of Books 2.
Chapter 15 Lists Objectives
Queues Queues Queues.
Building Java Programs
CMSC 341 Lecture 5 Stacks, Queues
Pointers and Linked Lists
Stacks and Queues.
Cs212: Data Structures Computer Science Department Lecture 7: 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.
Data Structures and Algorithms for Information Processing
Using a Queue Chapter 8 introduces the queue data type.
Using a Queue Chapter 8 introduces the queue data type.
Stacks and Queues.
Lecture 9: Stack and Queue
Presentation transcript:

90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. 1 Lecture 5: Stacks and Queues Data Structures and Algorithms for Information Processing Lecture 5: Stacks & Queues

90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. 2 Lecture 5: Stacks and Queues Stacks What is a Stack? –A stack is a data structure of ordered items such that items can be inserted and removed only at one end. Examples of Stacks: –Pez Dispenser –Cafeteria Trays

90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. 3 Lecture 5: Stacks and Queues Stacks What can we do with a stack? –push - place an item on the stack –peek - Look at the item on top of the stack, but do not remove it –pop - Look at the item on top of the stack and remove it

90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. 4 Lecture 5: Stacks and Queues Stacks A stack is a LIFO (Last-In/First-Out) data structure A stack is sometimes also called a pushdown store. What are some applications of stacks? –Program execution –Parsing –Evaluating postfix expressions

90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. 5 Lecture 5: Stacks and Queues Stacks Problem: –What happens if we try to pop an item off the stack when the stack is empty? This is called a stack underflow. The pop method needs some way of telling us that this has happened. In java we use the java.util.EmptyStackException

90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. 6 Lecture 5: Stacks and Queues Implementing a Stack There are two ways we can implement a stack: –Using an array –Using a linked list

90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. 7 Lecture 5: Stacks and Queues Implementing a Stack Implementing a stack using an array is fairly easy. –The bottom of the stack is at data[0] –The top of the stack is at data[numItems-1] –push onto the stack at data[numItems] –pop off of the stack at data[numItems-1]

90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. 8 Lecture 5: Stacks and Queues Implementing a Stack Implementing a stack using a linked list isn’t that bad either… –Store the items in the stack in a linked list –The top of the stack is the head node, the bottom of the stack is the end of the list –push by adding to the front of the list –pop by removing from the front of the list

90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. 9 Lecture 5: Stacks and Queues Reversing a Word We can use a stack to reverse the letters in a word. How?

90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. 10 Lecture 5: Stacks and Queues Reversing a Word Read each letter in the word and push it onto the stack When you reach the end of the word, pop the letters off the stack and print them out.

90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. 11 Lecture 5: Stacks and Queues The N-Queens Problem Main slides

90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. 12 Lecture 5: Stacks and Queues Queues What is a queue? –A data structure of ordered items such that items can be inserted only at one end and removed at the other end. Example –A line at the supermarket

90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. 13 Lecture 5: Stacks and Queues Queues What can we do with a queue? –Enqueue - Add an item to the queue –Dequeue - Remove an item from the queue The book calls these insert and getFront in order to simplify things.

90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. 14 Lecture 5: Stacks and Queues Queues A queue is called a FIFO (First in-First out) data structure. What are some applications of queues? –Round-robin scheduling in processors –Input/Output processing –Queueing of packets for delivery in networks

90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. 15 Lecture 5: Stacks and Queues Implementing a Queue Just like a stack, we can implementing a queue in two ways: –Using an array –Using a linked list

90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. 16 Lecture 5: Stacks and Queues Implementing a Queue Using an array to implement a queue is significantly harder than using an array to implement a stack. Why? –Unlike a stack, where we add and remove at the same end, in a queue we add to one end and remove from the other.

90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. 17 Lecture 5: Stacks and Queues Implementing a Queue There are two options for implementing a queue using an array: Option 1: –Enqueue at data[0] and shift all of the rest of the items in the array down to make room. –Dequeue from data[numItems-1]

90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. 18 Lecture 5: Stacks and Queues Implementing a Queue Option 2 –Enqueue at data[rear+1] –Dequeue at data[front] –The rear variable always contains the index of the last item in the queue. –The front variable always contains the index of the first item in the queue. –When we reach the end of the array, wrap around to the front again.

90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. 19 Lecture 5: Stacks and Queues Implementing a Queue // option 2 sketch of insert insert(Object item) { if(manyItems == 0) front = rear = 0; else rear = (rear + 1) mod size; data[rear] = item; manyItems++; }

90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. 20 Lecture 5: Stacks and Queues Implementing a Queue // option 2 sketch of getFront Object getFront() { answer = data[front]; front = (front + 1) mod size; manyItems--; return answer }

90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. 21 Lecture 5: Stacks and Queues Implementing a Queue Which approach is better? Assume that the queue has a large number of entries. In best case, for both queues, what is Big Theta? In the worst case, for both queues, what is Big Theta? Does it make sense to talk about “cases”?

90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. 22 Lecture 5: Stacks and Queues Implementing a Queue Implementing a queue using a linked list is still easy: –Front of the queue is stored as the head node of the linked list, rear of the queue is stored as the tail node. –Enqueue by adding to the end of the list –Dequeue by removing from the front of the list.

90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. 23 Lecture 5: Stacks and Queues Palindromes We can determine whether or not a word is a palindrome using a stack and a queue. How?

90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. 24 Lecture 5: Stacks and Queues Palindromes Read each letter in the phrase. Enqueue the letter into the queue, and push the letter onto the stack. After we have read all of the letters in the phrase: –Until the stack is empty, dequeue a letter from the queue and pop a letter from the stack. –If the letters are not the same, the phrase is not a palindrome

90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. 25 Lecture 5: Stacks and Queues Priority Queues Sometimes we may want certain things to get to go to the front of the line. Examples: –Frequent fliers on airlines –Real-time video and audio packets in networks

90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. 26 Lecture 5: Stacks and Queues Priority Queues In a priority queue, each item stored in the queue has a priority associated with it. When we call enqueue, we pass the item to be enqueued and the priority associated with that item.

90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. 27 Lecture 5: Stacks and Queues Implementing a PQ There are several ways in which we might implement a priority queue: –Use an array of ordinary queues, one for each priority. Queues[0] is the queue for priority 0, queues[1] is the queue for priority 1 –Use a sorted linked list The list should be sorted according the the priorities of the items contained Which approach is better?

90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. 28 Lecture 5: Stacks and Queues Thinking Exercise Where might a computer’s operating system use queues?

90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. 29 Lecture 5: Stacks and Queues Review A stack is a LIFO data structure A queue is a FIFO data structure Both queues and stacks can be implemented using either linked lists or arrays A priority queue is a queue in which the ordering of the items is determined by the priorities assigned to them.