Скачать презентацию Stacks and Queues 15 -121 Introduction to Data Скачать презентацию Stacks and Queues 15 -121 Introduction to Data

36a623d12321c24e7818bdb6d3e3a082.ppt

  • Количество слайдов: 24

Stacks and Queues 15 -121 Introduction to Data Structures Ananda Gunawardena 3/16/2018 1 Stacks and Queues 15 -121 Introduction to Data Structures Ananda Gunawardena 3/16/2018 1

Stack and Heap • A stack is a first-in-last-out structure • When a method Stack and Heap • A stack is a first-in-last-out structure • When a method is called computer stores all related data in a place called stack • When the method returns, stack is used generate the return parameters 3/16/2018 2

Basic Architecture • Stacks retain Information About where to return Stacks can be used Basic Architecture • Stacks retain Information About where to return Stacks can be used (implicitly) to implement a technique called recursion 3/16/2018 3

A Stack interface public interface Stack { public void push(Object x); public void pop(); A Stack interface public interface Stack { public void push(Object x); public void pop(); public Object top(); public boolean is. Empty(); public void clear(); } 3/16/2018 4

Stacks are LIFO Push operations: e d c b a 3/16/2018 5 Stacks are LIFO Push operations: e d c b a 3/16/2018 5

Stacks are LIFO Pop operation: e d Last element that was pushed is the Stacks are LIFO Pop operation: e d Last element that was pushed is the first to be popped. c b a 3/16/2018 6

Queues • Behavior – add item only from the back (enqueue) – remove items Queues • Behavior – add item only from the back (enqueue) – remove items only from the front (dequeue) • Many Applications – printer queue – network queues – common resource sharing • Queue Operations – enqueue – dequeue – clear – empty 3/16/2018 – full 7

A Queue interface public interface Queue { public void enqueue(Object x); public Object dequeue(); A Queue interface public interface Queue { public void enqueue(Object x); public Object dequeue(); public boolean is. Empty(); public void clear(); } 3/16/2018 8

Queues are FIFO back front k 3/16/2018 r q c m 9 Queues are FIFO back front k 3/16/2018 r q c m 9

Queues are FIFO Enqueue operation: back y 3/16/2018 front k r q c m Queues are FIFO Enqueue operation: back y 3/16/2018 front k r q c m 10

Queues are FIFO Enqueue operation: back front y 3/16/2018 k r q c m Queues are FIFO Enqueue operation: back front y 3/16/2018 k r q c m 11

Queues are FIFO Dequeue operation: back front y 3/16/2018 k r q c m Queues are FIFO Dequeue operation: back front y 3/16/2018 k r q c m 12

Implementation 3/16/2018 13 Implementation 3/16/2018 13

Implementing stacks, 1 Linked representation. All operations constant time, or O(1). c b a Implementing stacks, 1 Linked representation. All operations constant time, or O(1). c b a 3/16/2018 14

Implementing stacks, 2 • An alternative is to use an array-based representation. a b Implementing stacks, 2 • An alternative is to use an array-based representation. a b c top • What are some advantages and disadvantages of an array-based representation? 3/16/2018 15

A queue from two stacks Enqueue: Dequeue: j i b h c g d A queue from two stacks Enqueue: Dequeue: j i b h c g d f 3/16/2018 a e What happens when the stack on the right becomes empty? 16

Implementing a Queue with an array 3/16/2018 17 Implementing a Queue with an array 3/16/2018 17

Applications 3/16/2018 18 Applications 3/16/2018 18

Applications of Stacks • Balancing Symbols • Problem: Write a program that will check Applications of Stacks • Balancing Symbols • Problem: Write a program that will check the validity of a statement • Eg: (2 + 3 ( 4 – 5 )) is valid • (2 + 3 (4 – 5 ) is not valid • Discuss an algorithm using stacks 3/16/2018 19

Applications of Stacks ctd. . • Evaluating Postfix expressions • Consider the expression ( Applications of Stacks ctd. . • Evaluating Postfix expressions • Consider the expression ( 2+ 3*(5 – 2) + 3*2) • How do we write a program to find the answer to the above expression? • Write the expression in postfix notation 2 3 5 2 -*+3 2*+ • Use a stack to evaluate it. 3/16/2018 20

Stack Application - Maze • Think about a grid of rooms separated by walls. Stack Application - Maze • Think about a grid of rooms separated by walls. • Each room can be given a name. a c d e f g h i 3/16/2018 b j k l m n o p Find a path thru the maze from a to p. 21

Applications of Queue • Breadth First Traversal 3/16/2018 22 Applications of Queue • Breadth First Traversal 3/16/2018 22

Applications of Queue • Snake Game 3/16/2018 23 Applications of Queue • Snake Game 3/16/2018 23

Homework • Read notes on recursion • Think of more applications where a stack Homework • Read notes on recursion • Think of more applications where a stack or queue can be used • Read the assignment on Mazes 3/16/2018 24