Fall 2007CS 2251 Stacks Chapter 5. Fall 2007CS 2252 Chapter Objectives To learn about the stack data type and how to use its four methods: push, pop,

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

Stacks & Their Applications COP Stacks  A stack is a data structure that stores information arranged like a stack.  We have seen stacks before.
Stacks Based on Koffmann and Wolfgang Chapter 5. Chapter 5: Stacks2 Chapter Outline The Stack data type and its four methods: push(E), pop(), peek(),
Stacks Chapter 11.
COSC 2006 Chapter 7 Stacks III
COMPSCI 105 S Principles of Computer Science 13 Stacks.
Lecture 12 – ADTs and Stacks.  Modularity  Divide the program into smaller parts  Advantages  Keeps the complexity managable  Isolates errors (parts.
Stacks Chapter 5. Chapter Objectives  To learn about the stack data type and how to use its four methods: push, pop, peek, and empty  To understand.
ITEC200 Week05 Stacks. 2 Learning Objectives – Week05 Stacks (Chapter05) Students can Use the methods provided in the public interface.
Chapter 3 Stacks.
CHAPTER 3 Stacks. Chapter Objectives  To learn about the stack data type and how to use its four methods:  push  pop  peek  empty  To understand.
Topic 15 Implementing and Using Stacks
Stacks Chapter 5. Chapter 5: Stacks2 Chapter Objectives To learn about the stack data type and how to use its four methods: push, pop, peek, and empty.
Stacks.
Stacks Chapter 5. Chapter 5: Stacks2 Chapter Objectives To learn about the stack data type and how to use its four methods: push, pop, peek, and empty.
Stacks Chapter Chapter Contents Specifications of the ADT Stack Using a Stack to Process Algebraic Expressions Checking for Balanced Parentheses,
Fall 2007CS 2251 Stacks Chapter 5. Fall 2007CS 2252 Chapter Objectives To learn about the stack data type and how to use its four methods: push, pop,
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
Definition Stack is an ordered collection of data items in which access is possible only at one end (called the top of the stack). Stacks are known.
The Stack and Queue Types Lecture 10 Hartmut Kaiser
Chapter 3 Stacks.
CHAPTER 3 Stacks MIDTERM OCTOBER 17 IN LAB. Chapter Objectives  To learn about the stack data type and how to use its four methods:  push  pop  peek.
Chapter 7 Stack. Overview ● The stack data structure uses an underlying linear storage organization.  The stack is one of the most ubiquitous data structures.
Topic 3 The Stack ADT.
Comp 245 Data Structures Stacks. What is a Stack? A LIFO (last in, first out) structure Access (storage or retrieval) may only take place at the TOP NO.
Implementing Stacks Ellen Walker CPSC 201 Data Structures Hiram College.
Data Structures: CSCI 362 – Stack Implementation Data Structures: CSCI 362 – Stack Implementation lecture notes adapted from Data Structures with C++ using.
Lecture Objectives To understand how Java implements a stack To learn how to implement a stack using an underlying array or linked list Implement a simple.
CHAPTER 05 Compiled by: Dr. Mohammad Omar Alhawarat Stacks & Queues.
Data Structures and Algorithms
Computer Science Department Data Structure & Algorithms Problem Solving with Stack.
SAK 3117 Data Structures Chapter 3: STACKS. Objective To introduce: Stack concepts Stack operations Stack applications CONTENT 3.1 Introduction 3.2 Stack.
COMP 121 Week 13: Stacks. Objectives Learn about the stack data type and how to use its four methods: push, pop, peek, and empty Understand how Java implements.
Stack. Abstract Data Types (ADTs) An abstract data type (ADT) is an abstraction of a data structure An ADT specifies: Data stored Operations on the data.
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.
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.
© 2004 Goodrich, Tamassia Stacks. © 2004 Goodrich, Tamassia Stacks2 Abstract Data Types (ADTs) An abstract data type (ADT) is an abstraction of a data.
Stacks  Introduction  Applications  Implementations  Complex Applications.
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,
Lecture objectives  Collections interface  Learn about stacks and their methods:  push  pop  peek  Empty  Analyze stack applications and why stacks.
11/24/ CSC Outline  Stacks  Basic operations  Examples of use  Queues  Basic operations  Examples of use  Implementations  Array-based.
Chapter 6 Stacks. Copyright © 2004 Pearson Addison-Wesley. All rights reserved.1-2 Chapter Objectives Examine stack processing Define a stack abstract.
Stacks Ellen Walker CPSC 201 Data Structures Hiram College.
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.
Lecture Objectives  To understand how Java implements a stack  To learn how to implement a stack using an underlying array or linked list  Implement.
CHP-3 STACKS.
Click to edit Master text styles Stacks Data Structure.
1 Data Structures and Algorithms Stack. 2 The Stack ADT Introduction to the Stack data structure Designing a Stack class using dynamic arrays Linked Stacks.
CC 215 DATA STRUCTURES MORE ABOUT STACK APPLICATIONS Dr. Manal Helal - Fall 2014 Lecture 6 AASTMT Engineering and Technology College 1.
Applications of Stack Maitrayee Mukerji. Stacks Last In First Out (LIFO List) ◦ FILO? Insertions and Deletions from the same end called the Top Push(),
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.
Stacks Chapter 5.
MIDTERM OCTOBER 17 IN LAB Chapter 3 Stacks.
The Stack ADT. 3-2 Objectives Define a stack collection Use a stack to solve a problem Examine an array implementation of a stack.
Stacks.
Copyright ©2012 by Pearson Education, Inc. All rights reserved
PART II STACK APPLICATIONS
Chapter 5 Stacks.
Stacks Chapter 5 Adapted from Pearson Education, Inc.
5.1 The Stack Abstract Data Type
MIDTERM OCTOBER 11 IN LAB Chapter 3 Stacks.
Chapter 7 Stack.
Stacks.
Topic 15 Implementing and Using Stacks
Stack.
Chapter 7 (continued) © 2011 Pearson Addison-Wesley. All rights reserved.
5.3 Implementing a Stack Chapter 5 – The Stack.
5.1 The Stack Abstract Data Type
CHAPTER 3: Collections—Stacks
Presentation transcript:

Fall 2007CS 2251 Stacks Chapter 5

Fall 2007CS 2252 Chapter Objectives To learn about the stack data type and how to use its four methods: push, pop, peek, and empty To understand how Java implements a stack To learn how to implement a stack using an underlying array or a linked list To see how to use a stack in several applications

Fall 2007CS 2253 Stack Abstract Data Type A stack is a data structure with the property that only the top element of the stack is accessible The stack’s storage policy is Last-In, First-Out A stack can be compared to a Pez dispenser –Only the top item can be accessed –Can only extract one item at a time

Fall 2007CS 2254 Stack Abstract Data Type Only the top element of a stack is visible, therefore the number of operations performed by a stack are few –Inspect (peek) the top element –Retrieve (pop) the top element –Push a new element on the stack –Test for an empty stack

Fall 2007CS 2255 Stack ADT Operations Puts the item on the top of the stack and returns a reference to it. E push( E obj) Removes and returns the object at the top of the stack. E pop() Returns the object at the top of the stack without removing it. E peek() Returns true if the stack is empty and false otherwise. boolean empty() BehaviorMethods

Fall 2007CS 2256 Stack Applications Stacks are used for –method calls while a program is running Two Example programs using stacks –Palindrome finder –Parentheses matcher

Fall 2007CS 2257 Palindrome Finder A palindrome is a string that reads the same in either direction –"kayak" –“Able was I ere I saw Elba” – “Madam I'm Adam”

Fall 2007CS 2258 PalindromeFinder Fields The stack which stores the characters from the string private Stack charStack The string to be checkedprivate String inputString PurposeData Field

Fall 2007CS 2259 PalindromeFinder Methods Returns true if the original and reverse strings have the same characters (ignoring case) public boolean isPalindrome Returns the reverse stringprivate String buildReverse() Fill the stack with characters from the string private void fillStack() Initialize a PalindromeFinderpublic PalindromeFinder( String str) BehaviorMethod

Fall 2007CS Parentheses Matching When analyzing arithmetic expressions, it is important to determine whether an expression is balanced with respect to parentheses –(a+b*(c/(d-e)))+(d/e) Problem is further complicated if braces or brackets are used in conjunction with parenthesis –Parsing a Java program for example Solution is to use stacks!

Fall 2007CS ParenChecker Methods Returns true if ch is a closed parenthesis. private static boolean isClose( char ch) Returns true if ch is an open parenthesis. private static boolean isOpen( char ch) Returns true if the expression is balanced with respect to parentheses. public static boolean isBalanced( String expr) BehaviorMethod

Fall 2007CS Algorithm for isBalanced Create an empty stack of Characters Set balanced to true. Set index to 0. while balanced is true and index< length Get the next character if character is '(' push character onto stack else if character is ')' pop the top character from the stack if stack was empty set balanced to false return true if balanced is true and stack is empty

Fall 2007CS Implementing a Stack Extending Vector (java.util.Stack) Adapting a List Using an array Creating a linked structure

Fall 2007CS Stack as an Extension of Vector The Java API includes a Stack class as part of the package java.util The vector class implements a growable array of objects Elements of a vector can be accessed using an integer index and the size can grow or shrink as needed to accommodate the adding and removing of elements

Fall 2007CS Stack Extends Vector public class Stack extends Vector Stack inherits all the methods and data of Vector methods like get( int index) are not appropriate for a Stack

Fall 2007CS Stack with a List Component Can use either the ArrayList, Vector, or the LinkedList classes as all implement the List interface Name of class illustrated in text is ListStack –ListStack is an adapter class as it adapts the methods available in another class to the interface its clients expect by giving different names to essentially the same operations

Fall 2007CS Implementing a Stack Using an Array Need to allocate storage for an array with an initial default capacity when creating a new stack object Need to keep track of the top of the stack No size method See ArrayStack.java

Fall 2007CS ArrayStack

Fall 2007CS Linked Data Structure for Stack We can implement a stack using a linked list of nodes see LinkedStack.java

Fall 2007CS Comparing Stack Implementations Extending a Vector (as is done by Java) is a poor choice for stack implementation as all Vector methods are accessible Easiest implementation would be to use an ArrayList component for storing data All insertions and deletions are constant time regardless of the type of implementation discussed –All insertions and deletions occur at one end

Fall 2007CS Expressions and Stacks Consider two case studies that relate to evaluating arithmetic expressions –Postfix and infix notation Expressions normally written in infix form –Binary operators inserted between their operands A computer normally scans an expression string in the order that it is input; easier to evaluate an expression in postfix form

Fall 2007CS Expressions

Fall 2007CS Postfix expressions Advantage of postfix form is that there is no need to group subexpressions in parentheses No need to consider operator precedence

Fall 2007CS PostfixEvaluator Returns true if ch is an operator private boolean isOperator( char ch) Pops two operands, applies the operator and returns the result. private int evalOp( char op) Returns the value of the expression public int eval( String expr) Stack of operandsStack operandStack Attribute/BehaviorField or method

Fall 2007CS Evaluating Postfix Expressions

Fall 2007CS Postfix Evaluation Algorithm Create an empty stack of Integers while there are more tokens get the next token if the first character is a digit push the integer onto the stack else pop right operand pop left operand evaluate the operation push result onto stack Pop the result and return

Fall 2007CS Infix to Postfix Conversion The postfix expressionprivate stringBuilder postfix Stack of operatorsprivate Stack operatorStack AttributeData Field

Fall 2007CS Infix to Postfix Conversion Returns true if ch is an operator private boolean isOperator( char ch) Returns the precedence of op private int precedence( char op) Updates the operator stackprivate void processOperator( char op) Returns postfix string equivalent it infix public String convert (String infix) BehaviorMethod

Fall 2007CS Infix to Postfix Conversion

Fall 2007CS Infix to Postfix Conversion

Fall 2007CS Conversion Algorithm Initialize postfix to empty StringBuilder create empty operator stack while there are tokens in infix string get the next token if token is operand append to postfix else if token is operator call processOperator else indicate syntax error pop remaining operators and append to postfix

Fall 2007CS Algorithm for ProcessOperator if operator stack is empty push operator onto stack else topOp -> peek operator stack if current operator has higher precedence push current operator onto stack else while stack not empty and precedence <= current precedence pop top operator and append to postfix if operator stack not empty topOp -> peek operator stack push current operator on the stack

Fall 2007CS Chapter Review A stack is a last-in, first-out (LIFO) data structure A stack is a simple but powerful data structure; its four operations include empty, peek, pop, and push Stacks are useful to process information in the reverse of the order that it is encountered Java.util.Stack is implemented as an extension of the Vector class

Fall 2007CS Chapter Review (continued) Three ways to implement a stack: –Using an object of a class that implements the List interface as a container –Using an array as a container –Using a linked list as a container Stacks can be applied in programs for evaluating arithmetic expressions

Fall 2007CS ProcessOperator with Parens if operator stack is empty or current operator = '(' push operator onto stack else topOp -> peek operator stack if current operator has higher precedence push current operator onto stack else while stack not empty and precedence <= precedence(topOp) pop top operator if topOp = ')' break append to postfix if operator stack not empty topOp -> peek operator stack if current operator != ')' push current operator on the stack