16
STANDARD TEMPLATE LIBRARY STACKS Problem Solving with Computers-II

STANDARD TEMPLATE LIBRARY STACKS · C++STL • The C++ Standard Template Library is a very handy set of three built-in components: • Containers: Data structures • Iterators: Standard

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: STANDARD TEMPLATE LIBRARY STACKS · C++STL • The C++ Standard Template Library is a very handy set of three built-in components: • Containers: Data structures • Iterators: Standard

STANDARD TEMPLATE LIBRARY STACKS

Problem Solving with Computers-II

Page 2: STANDARD TEMPLATE LIBRARY STACKS · C++STL • The C++ Standard Template Library is a very handy set of three built-in components: • Containers: Data structures • Iterators: Standard

C++STL• The C++ Standard Template Library is a very handy set of three built-in

components:

• Containers: Data structures • Iterators: Standard way to search containers • Algorithms: These are what we ultimately use to solve problems

!2

thataregeneric storeanykindofdata

thinkofthem as generic pointers

The STL separates S.to algorithms fromcontainersThe other option is that every

container class implements its own

copyof the algorithm

With Ncontainer and M algorithm Eliesecond approach

will result in Nxm implementation Not efficient

That's why the STL separatessome of the algorithmsfromthe datasleacheus

Page 3: STANDARD TEMPLATE LIBRARY STACKS · C++STL • The C++ Standard Template Library is a very handy set of three built-in components: • Containers: Data structures • Iterators: Standard

C++ STL container classes

!3

array vector

forward_list list

stack queue

priority_queue set

multiset (non unique keys) deque

unordered_set map

unordered_map multimap

bitset

why

arraysdynamicarraysingly linkedlist

Page 4: STANDARD TEMPLATE LIBRARY STACKS · C++STL • The C++ Standard Template Library is a very handy set of three built-in components: • Containers: Data structures • Iterators: Standard

Stacks – container class available in the C++ STL• Container class that uses the Last In First Out (LIFO) principle • Methods i. push() ii. pop() iii. top() iv. empty()

!4

Demo reversing a string

push to the topofthe stackdelete the element on the top does not return a value

returns the cleat on the top does not delete it

used to check if the stack is empty

Page 5: STANDARD TEMPLATE LIBRARY STACKS · C++STL • The C++ Standard Template Library is a very handy set of three built-in components: • Containers: Data structures • Iterators: Standard

Notations for evaluating expression• Infix number operator number ( 7 + ( 3 * 5) ) – ( 4 / 2 ) • Prefix operators precede the operands • Postfix operators come after the operands

!5

Toperands142.0operator

PostfixInfix Prefix

3543 5 357 3 5 17 35 735 1

42 4214 2

7 3 5 412 7 355 42 735 421

Page 6: STANDARD TEMPLATE LIBRARY STACKS · C++STL • The C++ Standard Template Library is a very handy set of three built-in components: • Containers: Data structures • Iterators: Standard

Lab05 – part 1: Evaluate a fully parenthesized infix expression

!6

Wbubalanced

exC

not balanced

Page 7: STANDARD TEMPLATE LIBRARY STACKS · C++STL • The C++ Standard Template Library is a very handy set of three built-in components: • Containers: Data structures • Iterators: Standard

( ( 2 * 2 ) + ( 8 + 4 ) )

!7

Page 8: STANDARD TEMPLATE LIBRARY STACKS · C++STL • The C++ Standard Template Library is a very handy set of three built-in components: • Containers: Data structures • Iterators: Standard

( ( 2 * 2 ) + ( 8 + 4 ) )

!8

What should be the next step after the first right parenthesis is encountered? A. Push the right parenthesis

onto the stack B. If the stack is not empty pop

the next item on the top of the stack

C. Ignore the right parenthesis and continue checking the next character

D.None of the above

O

Page 9: STANDARD TEMPLATE LIBRARY STACKS · C++STL • The C++ Standard Template Library is a very handy set of three built-in components: • Containers: Data structures • Iterators: Standard

( ( 2 * 2 ) + ( 8 + 4 ) )

!9

Page 10: STANDARD TEMPLATE LIBRARY STACKS · C++STL • The C++ Standard Template Library is a very handy set of three built-in components: • Containers: Data structures • Iterators: Standard

Evaluating a fully parenthesized infix expression

!10

Assumes the expression has balanced tyananthesis and is fully paranthesig

Use two stacks

stack S1 stores the operandsstack S2 stores the operators

1 Read equesurn left to right2 whenyouencomena

Push operands in si pushoperators ins L right paranthesis

d

poptwooperandsandone

operator evaluateandshore the subexpression

µ back in SI

Page 11: STANDARD TEMPLATE LIBRARY STACKS · C++STL • The C++ Standard Template Library is a very handy set of three built-in components: • Containers: Data structures • Iterators: Standard

Evaluating a fully parenthesized infix expression

!11

Page 12: STANDARD TEMPLATE LIBRARY STACKS · C++STL • The C++ Standard Template Library is a very handy set of three built-in components: • Containers: Data structures • Iterators: Standard

Evaluating a fully parenthesized infix expression

!12

Page 13: STANDARD TEMPLATE LIBRARY STACKS · C++STL • The C++ Standard Template Library is a very handy set of three built-in components: • Containers: Data structures • Iterators: Standard

Evaluating a fully parenthesized infix expression

!13

Page 14: STANDARD TEMPLATE LIBRARY STACKS · C++STL • The C++ Standard Template Library is a very handy set of three built-in components: • Containers: Data structures • Iterators: Standard

Lab 05, part2 : Evaluating post fix expressions using a single stackPostfix: 7 3 5 * + 4 2 / - Infix: ( 7 + ( 3 * 5) ) – ( 4 / 2 )

!14

Page 15: STANDARD TEMPLATE LIBRARY STACKS · C++STL • The C++ Standard Template Library is a very handy set of three built-in components: • Containers: Data structures • Iterators: Standard

Small group exerciseWrite a ADT called in minStack that provides the following methods • push() // inserts an element to the “top” of the minStack • pop() // removes the last element that was pushed on the stack • top () // returns the last element that was pushed on the stack • min() // returns the minimum value of the elements stored so far

!15

Whenwe pop 9 is removed the overall min shouldthenbe8

9 mints You can use any ofthe

mid containerclasses

coveredso

8 min61 far42 min421 array vector

list set stack

Page 16: STANDARD TEMPLATE LIBRARY STACKS · C++STL • The C++ Standard Template Library is a very handy set of three built-in components: • Containers: Data structures • Iterators: Standard

jO

42 42SI

Use asecond could use a lost

stack toremember but in that case

themin overall min is not gruntedto be 0Cc in theworst