Chapter 6 A Stacks. © 2004 Pearson Addison-Wesley. All rights reserved6 A-2 The Abstract Data Type: Developing an ADT During the Design of a Solution.

Slides:



Advertisements
Similar presentations
CS Data Structures I Chapter 6 Stacks I 2 Topics ADT Stack Stack Operations Using ADT Stack Line editor Bracket checking Special-Palindromes Implementation.
Advertisements

Sample PMT online… Browse 1120/sumII05/PMT/2004_1/ 1120/sumII05/PMT/2004_1/
COSC 2006 Chapter 7 Stacks III
COMPSCI 105 S Principles of Computer Science 13 Stacks.
CS Data Structures II Review COSC 2006 April 14, 2017
Chapter 6 Stacks. © 2005 Pearson Addison-Wesley. All rights reserved6-2 ADT Stack Figure 6.1 Stack of cafeteria dishes A stack –Last-in, first-out (LIFO)
CMPT 225 Stacks.
Stacks A stack is a data structure that only allows items to be inserted and removed at one end We call this end the top of the stack The other end is.
Chapter 3 Stacks.
Stacks.
© 2006 Pearson Addison-Wesley. All rights reserved8-1 Chapter 8 Queues CS102 Sections 51 and 52 Marc Smith and Jim Ten Eyck Spring 2008.
© 2006 Pearson Addison-Wesley. All rights reserved7A-1 Chapter 7 Stacks.
1 CSCD 326 Data Structures I Stacks. 2 Data Type Stack Most basic property: last item in (most recently inserted) is first item out LIFO - last in first.
Chapter 6 Stacks. © 2005 Pearson Addison-Wesley. All rights reserved6-2 ADT Stack Figure 6.1 Stack of cafeteria dishes A stack –Last-in, first-out (LIFO)
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.
Chapter 7 Queues. © 2005 Pearson Addison-Wesley. All rights reserved7-2 The Abstract Data Type Queue A queue –New items enter at the back, or rear, of.
Chapter 6 Stacks. © 2005 Pearson Addison-Wesley. All rights reserved6-2 The Abstract Data Type Specifications of an abstract data type for a particular.
Stacks Chapter 6 Data Structures and Problem Solving with C++: Walls and Mirrors, Frank Carrano, © 2012.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Chapter 6: Stacks Data Abstraction & Problem Solving with C++
© 2006 Pearson Addison-Wesley. All rights reserved7A-1 Chapter 7 Stacks.
© 2006 Pearson Addison-Wesley. All rights reserved7A-1 Chapter 7 Stacks (and a bit of generics for flavor)
Chapter 7 Stacks II CS Data Structures I COSC 2006
Chapter 6 Stacks CS Data Structures Mehmet H Gunes Modified from authors’ slides.
Chapter 7 Stacks I CS Data Structures I COSC 2006 April 22, 2017
© 2006 Pearson Addison-Wesley. All rights reserved8 A-1 Chapter 8 Queues (slightly modified by Dan Fleck)
Computer Science 112 Fundamentals of Programming II Introduction to Stacks.
Chapter 7 Stacks. © 2004 Pearson Addison-Wesley. All rights reserved 7-2 The Abstract Data Type: Developing an ADT During the Design of a Solution Specifications.
1 Stacks. 2 A stack has the property that the last item placed on the stack will be the first item removed Commonly referred to as last-in, first-out,
© 2006 Pearson Addison-Wesley. All rights reserved8 A-1 Chapter 8 Queues.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Chapter 6: Stacks Data Abstraction & Problem Solving with C++
Min Chen School of Computer Science and Engineering Seoul National University Data Structure: Chapter 3.
Lecture 6: Stacks 1. 2 The Abstract Data Type Specifications of an abstract data type for a particular problem –Can emerge during the design of the problem’s.
The Abstract Data Type Queue A queue New items enter at the back, or rear, of the queue Items leave from the front of the queue First-in, first-out (FIFO)
Chapter 6 B Stacks. © 2004 Pearson Addison-Wesley. All rights reserved6 B-2 Comparing Implementations All of the three implementations are ultimately.
Chapter 8 Queues. © 2004 Pearson Addison-Wesley. All rights reserved 8-2 The Abstract Data Type Queue A queue –New items enter at the back, or rear, of.
© 2011 Pearson Addison-Wesley. All rights reserved 8 B-1 Chapter 8 (continued) Queues.
CSC 205 – Java Programming II Lecture 30 April 3, 2002.
Chapter 4 ADTs Stack and Queue. 4-2 Formal ADT Specifications The Java interface construct lets us collect together method interfaces into a syntactic.
Chapter 7 A Queues. © 2004 Pearson Addison-Wesley. All rights reserved7 A-2 The Abstract Data Type Queue A queue –New items enter at the back, or rear,
11/07/141 Abstract Data Types (ADTs) An abstract data type (ADT) is an abstraction of a data structure An ADT specifies: –Data stored –Operations on the.
6/12/20161 Abstract Data Types (ADTs) An abstract data type (ADT) is an abstraction of a data structure An ADT specifies: –Data stored –Operations on the.
Stacks The Stack ADT stores arbitrary objects. Insertions and deletions follow the last-in first-out (LIFO) scheme. The last item placed.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Chapter 7: Queues Data Abstraction & Problem Solving with C++
ADT Stack & Queue - Case Studies TCP1201: 2013/2014.
Data Abstraction and Problem Solving with JAVA Walls and Mirrors Frank M. Carrano and Janet J. Prichard © 2001 Addison Wesley Data Abstraction and Problem.
Chapter 7 Stacks © 2006 Pearson Addison-Wesley. All rights reserved 7A-1.
Data Abstraction and Problem Solving with JAVA Walls and Mirrors Frank M. Carrano and Janet J. Prichard © 2001 Addison Wesley Data Abstraction and Problem.
CS Data Structures Chapter 6 Stacks Mehmet H Gunes
Queues Chapter 8 (continued)
Data Abstraction & Problem Solving with C++
CENG 213 Data Structures Stacks 5/15/2018 CENG 213.
Stacks Chapter 6.
CC 215 Data Structures Stack ADT
Abstract Data Types (ADTs)
Stacks.
Introduction to Data Structures
Chapter 6 Stacks.
Stacks Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013.
CSC 205 – Java Programming II
Stacks Chapter 6 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013.
Chapter 8 Queues © 2006 Pearson Addison-Wesley. All rights reserved.
Abstract Data Types (ADTs)
Ch. 7 Stack 도입을 위한 예 “←” in keyboard input line
Queues cont. Chapter 8 © 2011 Pearson Addison-Wesley. All rights reserved.
Chapters 6 and 7 Stacks.
Chapter 7 (continued) © 2011 Pearson Addison-Wesley. All rights reserved.
Queues Chapter 8 © 2011 Pearson Addison-Wesley. All rights reserved.
Chapter 7 © 2011 Pearson Addison-Wesley. All rights reserved.
Queues.
Stack Implementations
Presentation transcript:

Chapter 6 A Stacks

© 2004 Pearson Addison-Wesley. All rights reserved6 A-2 The Abstract Data Type: Developing an ADT During the Design of a Solution Specifications of an abstract data type for a particular problem –Can emerge during the design of the problem’s solution –Examples readAndCorrect algorithm displayBackward algorithm

© 2004 Pearson Addison-Wesley. All rights reserved6 A-3 Developing an ADT During the Design of a Solution ADT stack operations –Create an empty stack –Determine whether a stack is empty –Add a new item to the stack –Remove from the stack the item that was added most recently –Remove all the items from the stack –Retrieve from the stack the item that was added most recently

© 2004 Pearson Addison-Wesley. All rights reserved6 A-4 Developing an ADT During the Design of a Solution A stack –Last-in, first-out (LIFO) property The last item placed on the stack will be the first item removed –Analogy A stack of dishes in a cafeteria Figure 6.1 Stack of cafeteria dishes

© 2004 Pearson Addison-Wesley. All rights reserved6 A-5 Developing an ADT During the Design of a Solution A queue –First in, first out (FIFO) property The first item added is the first item to be removed

© 2004 Pearson Addison-Wesley. All rights reserved6 A-6 Refining the Definition of the ADT Stack Pseudocode for the ADT stack operations createStack() // Creates an empty stack. isEmpty() // Determines whether a stack is empty. push(newItem) throws StackException // Adds newItem to the top of the stack. // Throws StackException if the insertion is // not successful.

© 2004 Pearson Addison-Wesley. All rights reserved6 A-7 Refining the Definition of the ADT Stack Pseudocode for the ADT stack operations (Continued) pop() throws StackException // Retrieves and then removes the top of the stack. // Throws StackException if the deletion is not // successful. popAll() // Removes all items from the stack. peek() throws StackException // Retrieves the top of the stack. Throws // StackException if the retrieval is not successful

© 2004 Pearson Addison-Wesley. All rights reserved6 A-8 Using the ADT Stack in a Solution displayBackward and readAndCorrect algorithms can be refined by using stack operations A program can use a stack independently of the stack’s implementation

© 2004 Pearson Addison-Wesley. All rights reserved6 A-9 Axioms (Optional) Axioms are used to define an ADT formally –Example Axiom to specify that the last item inserted into stack is the first item to be removed (stack.push(newItem)).pop() = stack

© 2004 Pearson Addison-Wesley. All rights reserved6 A-10 Simple Applications of the ADT Stack: Checking for Balanced Braces A stack can be used to verify whether a program contains balanced braces –An example of balanced braces abc{defg{ijk}{l{mn}}op}qr –An example of unbalanced braces abc{def}}{ghij{kl}m

© 2004 Pearson Addison-Wesley. All rights reserved6 A-11 Checking for Balanced Braces Requirements for balanced braces –Each time you encounter a “}”, it matches an already encountered “{” –When you reach the end of the string, you have matched each “{”

© 2004 Pearson Addison-Wesley. All rights reserved6 A-12 Checking for Balanced Braces Figure 6.2 Traces of the algorithm that checks for balanced braces

© 2004 Pearson Addison-Wesley. All rights reserved6 A-13 Checking for Balanced Braces StackException –A Java method that implements the balanced- braces algorithm should do one of the following Take precautions to avoid an exception Provide try and catch blocks to handle a possible exception

© 2004 Pearson Addison-Wesley. All rights reserved6 A-14 // close brace else if (ch is ‘}’) { if (!Stack.isEmpty()) { // pop open brace openBrace = stack.pop() } else { // no open brace balancedSoFar = false; } // end if // close brace else if (ch is ‘}’) { try { // try to pop open brace openBrace = stack.pop() ] // end try catch (StackException e) { // no open brace balancedSoFar = false; } // end catch } // end if

© 2004 Pearson Addison-Wesley. All rights reserved6 A-15 Recognizing Strings in a Language Language L L = {w$w’ : w is a possible empty string of characters other than $, w’ = reverse(w) } –A stack can be used to determine whether a given string is in L Traverse the first half of the string, pushing each character onto a stack Once you reach the $, for each character in the second half of the string, pop a character off the stack –Match the popped character with the current character in the string

© 2004 Pearson Addison-Wesley. All rights reserved6 A-16 Implementations of the ADT Stack The ADT stack can be implemented using –An array –A linked list –The ADT list StackInterface –Provides a common specification for the three implementations StackException –Used by StackInterface –Extends java.lang.RuntimeException

© 2004 Pearson Addison-Wesley. All rights reserved6 A-17

© 2004 Pearson Addison-Wesley. All rights reserved6 A-18 Implementations of the ADT Stack Figure 6.3 Implementation of the ADT stack that use a) an array; b) a linked list; c) an ADT list

© 2004 Pearson Addison-Wesley. All rights reserved6 A-19 An Array-Based Implementation of the ADT Stack StackArrayBased class –Implements StackInterface –Instances Stacks –Private data fields An array of Objects called items The index top Figure 6.4 An array-based implementation

© 2004 Pearson Addison-Wesley. All rights reserved6 A-20

© 2004 Pearson Addison-Wesley. All rights reserved6 A-21 A Reference-Based Implementation of the ADT Stack A reference-based implementation –Required when the stack needs to grow and shrink dynamically StackReferenceBased –Implements StackInterface –top is a reference to the head of a linked list of items

© 2004 Pearson Addison-Wesley. All rights reserved6 A-22 A Reference-Based Implementation of the ADT Stack Figure 6.5 A reference-based implementation

© 2004 Pearson Addison-Wesley. All rights reserved6 A-23

© 2004 Pearson Addison-Wesley. All rights reserved6 A-24 An Implementation That Uses the ADT List The ADT list can be used to represent the items in a stack If the item in position 1 of a list represents the top of the stack –push(newItem) operation is implemented as add(1, newItem) –pop() operation is implemented as get(1) remove(1) –peek() operation is implemented as get(1)

© 2004 Pearson Addison-Wesley. All rights reserved6 A-25 An Implementation That Uses the ADT List Figure 6.6 An implementation that uses the ADT list

© 2004 Pearson Addison-Wesley. All rights reserved6 A-26

© 2004 Pearson Addison-Wesley. All rights reserved6 A-27 Please open file carrano_ppt06_B.ppt to continue viewing chapter 1.