@ 1998-2003 University of Washington 19b-1 CSC 143 Applications of Stacks and Queues.

Slides:



Advertisements
Similar presentations
INFIX, PREFIX, & POSTFIX EXPRESSIONS. Infix Notation We usually write algebraic expressions like this: a + b This is called infix notation, because the.
Advertisements

Stacks & Their Applications COP Stacks  A stack is a data structure that stores information arranged like a stack.  We have seen stacks before.
Stacks - 3 Nour El-Kadri CSI Evaluating arithmetic expressions Stack-based algorithms are used for syntactical analysis (parsing). For example.
Prefix, Postfix, Infix Notation
C o n f i d e n t i a l Developed By Nitendra NextHome Subject Name: Data Structure Using C Title : Overview of Stack.
CS 206 Introduction to Computer Science II 03 / 04 / 2009 Instructor: Michael Eckmann.
CMPT 225 Stacks-part2.
Topic 15 Implementing and Using Stacks
CS 206 Introduction to Computer Science II 03 / 06 / 2009 Instructor: Michael Eckmann.
Stacks & Queues Infix Calculator CSC 172 SPRING 2002 LECTURE 5.
© 2006 Pearson Addison-Wesley. All rights reserved7 B-1 Chapter 7 (continued) Stacks.
Stacks & Queues Infix Calculator CSC 172 SPRING 2004 LECTURE 13.
Infix, Postfix, Prefix.
© 2006 Pearson Addison-Wesley. All rights reserved7A-1 Chapter 7 Stacks.
Postfix notation. About postfix notation Postfix, or Reverse Polish Notation (RPN) is an alternative to the way we usually write arithmetic expressions.
CS 206 Introduction to Computer Science II 10 / 15 / 2008 Instructor: Michael Eckmann.
CS 206 Introduction to Computer Science II 03 / 16 / 2009 Instructor: Michael Eckmann.
Blind Search-Part 2 Ref: Chapter 2. Search Trees The search for a solution can be described by a tree - each node represents one state. The path from.
Chapter 6 Stacks. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 6-2 Chapter Objectives Examine stack processing Define a stack abstract.
Topic 15 Implementing and Using Stacks
Class 4: Queues. cis 335 Fall 2001 Barry Cohen What is a queue? n A stack is an ordered sequence of items. n As in lists and stacks, each node contains.
Class 4: Stacks. cis 335 Fall 2001 Barry Cohen What is a stack? n A stack is an ordered sequence of items, of which only the last (‘top’) item can be.
Cmpt-225 Simulation. Application: Simulation Simulation  A technique for modeling the behavior of both natural and human-made systems  Goal Generate.
CS 206 Introduction to Computer Science II 10 / 28 / 2009 Instructor: Michael Eckmann.
The Stack and Queue Types Lecture 10 Hartmut Kaiser
Data Structures Lecture : Stacks (Infix, Postfix and Prefix Expressions) Azhar Maqsood NUST Institute of Information Technology (NIIT)
Fundamentals of Python: From First Programs Through Data Structures Chapter 14 Linear Collections: Stacks.
Implementing Stacks Ellen Walker CPSC 201 Data Structures Hiram College.
CSC 205 Programming II Postfix Expressions. Recap: Stack Stack features Orderly linear structure Access from one side only – top item Stack operations.
(c) University of Washington20d-1 CSC 143 Java Applications of Trees.
Computer Science Department Data Structure & Algorithms Problem Solving with Stack.
COP3530 Data Structures600 Stack Stack is one the most useful ADTs. Like list, it is a collection of data items. Supports “LIFO” (Last In First Out) discipline.
Data Structures Week 4 Our First Data Structure The story so far  We understand the notion of an abstract data type.  Saw some fundamental operations.
Week 3 – Wednesday.  What did we talk about last time?  ADTs  List implementation with a dynamic array.
Due: 2007/11/12. Problem 1 Rewrite function Push and Pop (Program 3.10 and 3.12) using an additional variable lastOp as discussed on Page 146. The queue.
Chapter 6 B Stacks. © 2004 Pearson Addison-Wesley. All rights reserved6 B-2 Comparing Implementations All of the three implementations are ultimately.
Basic Data Structures Stacks. A collection of objects Objects can be inserted into or removed from the collection at one end (top) First-in-last-out.
Stacks An Abstract Data Type. Restricted Access Unlike arrays, stacks only allow the top most item to be accessed at any time The interface of a stack.
Copyright © Curt Hill Stacks An Useful Abstract Data Type.
Prefix, Postfix, Infix Notation. Infix Notation  To add A, B, we write A+B  To multiply A, B, we write A*B  The operators ('+' and '*') go in between.
Stacks A stack is a linear data structure that can be accessed only at one of its ends for storing and retrieving data LIFO (Last In First Out) structure.
CC 215 DATA STRUCTURES MORE ABOUT STACK APPLICATIONS Dr. Manal Helal - Fall 2014 Lecture 6 AASTMT Engineering and Technology College 1.
Chapter 1 What is Simulation?. Fall 2001 IMSE643 Industrial Simulation What’s Simulation? Simulation – A broad collection of methods and applications.
BCA II Data Structure Using C
Stacks Access is allowed only at one point of the structure, normally termed the top of the stack access to the most recently added item only Operations.
CS Data Structures Chapter 6 Stacks Mehmet H Gunes
Stacks Chapter 6.
Revised based on textbook author’s notes.
COMPSCI 107 Computer Science Fundamentals
F453 Computing Questions and Answers
Applications of Stacks and Queues
CSC 172 DATA STRUCTURES.
Stack application: postponing data usage
Stacks – Calculator Application
Stacks – Calculator Application
Stacks – Calculator Application
Stack Applications Lecture 29 Thu, Apr 5, /23/2019
Queue Applications Lecture 31 Mon, Apr 9, 2007.
Computer Science 2 5/17/2016 Finish the Queue Program
Topic 15 Implementing and Using Stacks
CSC 143 Java Applications of Trees.
(Part 2) Infix, Prefix & Postfix
Queue Applications Lecture 31 Tue, Apr 11, 2006.
Applications of Stacks and Queues
CSCS-200 Data Structure and Algorithms
17CS1102 DATA STRUCTURES © 2016 KL University – The contents of this presentation are an intellectual and copyrighted property of KL University. ALL RIGHTS.
Chapter 7 (continued) © 2011 Pearson Addison-Wesley. All rights reserved.
Presented by : Aman Gupta PGT CS KV No.1, Narimedu, Madurai
Stacks A stack is an ordered set of elements, for which only the last element placed into the stack is accessible. The stack data type is also known as.
Presentation transcript:

@ University of Washington 19b-1 CSC 143 Applications of Stacks and Queues

@ University of Washington 19b-2 Lists, Queues, Stacks, and Searching  Lists are fine for searching  especially once they have been sorted.  Applications that search lists have a hidden assumption: you know in advance what all the data is.  Sometimes you don't!  Sometimes you discover things in the process of searching.  Other times the list is too long to compile before searching it.  Other times the list has no obvious order.  Other times the cost of getting all the needed information is too high.

@ University of Washington 19b-3 Queues and Searching  Queues and stacks are often appropriate structures for organizing a partial list as a process is on-going.  Example: finding the cheapest non-stop fare from Sea-Tac to Cleveland, Dec. 24.  Ahead of time, you don't have a list of all flights to search through.  Possible process: Think of the possible airlines and put them in a queue. Take first item off the queue. if "airline", find all flights from Sea-Tac to Cleveland 12/23 or 12/24 and add each to queue. if "flight", examine price, time, day, etc. and decide if it's good enough to stop Keep going until queue is empty, or until you decide to stop.

@ University of Washington 19b-4 Travel Search Refinements When adding flights to the queue... does it matter what order they are added in??  Answer: if you are looking for the absolute best, it doesn't  Eventually you have to look at all possibilities  If your goal is less strict, you might stop earlier  "Find an affordable flight from Sea-Tac to Cleveland, preferably non-stop, Dec. 24, or Dec. 23 if necessary"  The order in which you examine the possibilities affects the answer.  Interpret items on the queue not as individual flights, but as flight characteristics (that might expand to one, many, or no flights)

@ University of Washington 19b-5 Searching: Queue vs. Stack  Instead of a Queue, a Stack could be used.  This primarily affects the order in which the possibilities are expanded and examined.  "Find a flight which costs under $200", starting with a list of airlines to consider.  Several airlines might have a flight that qualifies. Which will be chosen...  using a Queue:  using a Stack:  The usual picture that is drawn (a tree) gives rise to the expressions "depth first" and "breadth first".

@ University of Washington 19b-6 Another Search Application  Searching for a path to escape a maze  Algorithm: try all possible sequences of moves in the maze until either  you find a sequence that works, or...  no more to try  An all-possibilities search is called and “exhaustive search”  A stack helps keep track of the possibilities  Traces a path of moves  Popping the stack moves you backwards  Can get a similar effect without a stack, by using recursion

@ University of Washington 19b-7 Another Application: Palindromes  "Madam, I'm Adam."  "Enid and Edna dine."  "A man, a plan, a canal – Panama!"  Capitalization, spacing, and punctuation are usually ignored.  Suppose characters are arriving on a Stream Reader. Suggest an algorithm to see if the string forms a palindrome.  Hint: this lecture is about stacks and queues...

@ University of Washington 19b-8 Computers and Simulation  Computer programs are often used to “simulate” some aspect of the real world  Movement of people and things  Economic trends  Weather forecasting  Physical, chemical, industrial processes  Why?  Cheaper, safer, more humane  But have to worry about accuracy and faithfulness to real world

@ University of Washington 19b-9 Queues and Simulations  Queues are often useful in simulations  Common considerations  Time between arrival  Service time  Number of servers  Often want to investigate/predict  Time spend waiting in queue  Effect of more/fewer servers  Effect of different arrival rates

@ University of Washington 19b-10 Example: Simulation of a Bank  People arrive and get in line for a teller  Arrival patterns may depend on time of day, day of week, etc.  When a teller is free, person at the head of the line gets served  Sounds like a queue is the right data model  A bank might have different kinds of “tellers” (commercial tellers, loan officers, etc)  different queues for each one  Simulation can be used to answer questions like  What is the average or longest wait in line  What would be the effect of hiring another teller

@ University of Washington 19b-11 Simulations in Science  Classical physics: describe the physical world with (differential) equations  Problem: too many interactions, equations too numerous and complex to solve exactly  Alternative: build a model to simulate the operation  Zillions of applications in physics, weather, astronomy, chemistry, biology, ecology, economics, etc. etc.  Ideal model would allow safe virtual experiments and dependable conclusions

@ University of Washington 19b-12 Time-Based Simulations  Time-based simulation  Look and see what happens at every “tick” of the clock  Might "throw dice" to determine what happens  Random number or probability distribution  Size of time step?  A day, a millisecond, etc. depending on application

@ University of Washington 19b-13 Event-Based Simulations  Event-based simulation  Schedule future events and process each event as its time arrives  Bank simulation events  “Customer arrives” could be one event (external)  “Customer starts getting service” (internal)  “Customer finishes transaction”  “Teller goes to lunch”...  Event list holds the events waiting to happen  Each one is processed in chronological order  External events might come from a file, user input, etc.  Internal events are generated by other events

@ University of Washington 19b-14 Another Application: Evaluating Expressions  Expressions like “3 * (4 + 5)” have to be evaluated by calculators and compilers  We’ll look first at another form of expression, called “postfix” or “reverse Polish notation”  Turns out a stack algorithm works like magic to do postfix evaluation  And... another stack algorithm can be used to convert from infix to postfix!

@ University of Washington 19b-15 Postfix vs. Infix  Review: Expressions have operators (+, -, *, /, etc) and operands (numbers, variables)  In everyday use, we write the binary operators in between the operands  “4 + 5” means “add 4 and 5”  called infix notation  No reason why we couldn’t write the two operands first, then the operator  “4 5 +” would mean “add 4 and 5”  called postfix notation

@ University of Washington 19b-16 More on Postfix  * - means same as (3 (4 5 *) -)  infix: 3 - (4 * 5)  Parentheses aren’t needed!  When you see an operator: both operands must already be available. Stop and apply the operator, then go on  Precedence is implicit  Do the operators in the order found, period!  Practice converting and evaluating:  * 2 %  (3 + (5 / 3) * 6) - 4

@ University of Washington 19b-17 Why Postfix?  Does not require parentheses!  Some calculators make you type in that way  Easy to process by a program  The processing algorithm uses a stack for operands (data)  simple and efficient

@ University of Washington 19b-18 Postfix Evaluation via a Stack  Read in the next “token” (operator or data)  If data, push it on the data stack  If (binary) operator (call it “op”): Pop off the most recent data (B) and next most recent (A) Perform the operation R = A op B Push R on the stack  Continue with the next token  When finished, the answer is the stack top.  Simple, but works like magic!  Note: "tokens" are not necessarily single characters  In the expression there are three tokens  White space is generally ignored

@ University of Washington 19b-19 Refinements and Errors  If data stack is ever empty when data is needed for an operation:  Then the original expression was bad  Too many operators up to that point  If the data stack is not empty after the last token has been processed and the stack popped:  Then the original expression was bad  Too few operators or too many operands

@ University of Washington 19b-20 Example: * Draw the stack at each step!  Read 3. Push it (because it’s data)  Read 4. Push it.  Read 5. Push it.  Read -. Pop 5, pop 4, perform Push -1  Read *. Pop -1, pop 3, perform 3 * -1. Push -3.  No more tokens. Final answer: pop the -3.  note that stack is now empty

@ University of Washington 19b-21 Infix vs. Postfix  Everyday life uses infix notation for expressions  Computer languages most often use infix notation  Parenthesis may be used  May be necessary to overcome precedence  May be helpful to clarify the expression  ( and ) are tokens  Our postfix evaluation algorithm doesn't work with infix.  Solution: convert infix to postfix, then apply postfix evaluation algorithm.

@ University of Washington 19b-22 Infix to Postfix  Algorithm:  Read a token  If operand, output it immediately  If ‘(‘, push the '(' on stack  If operator: if stack top is an op of => precedence: pop and output stop when ‘(‘ is on top or stack empty push the new operator  If ‘)’, pop and output until ‘(‘ has been popped  Repeat until end of input pop rest of stack  Try it out!