lecture5

lecture5 - Wednesday, J anuar y 14 Stacks Queues th B ut fi...

Info iconThis preview shows pages 1–11. Sign up to view the full content.

View Full Document Right Arrow Icon
Wednesday, January 14 th Stacks Queues
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
But first…
Background image of page 2
The Stack: A Useful ADT Stack : an ADT that works like a stack of magazines or a stack of plates in a cafeteria. Stack operations: put something on top of the stack ( PUSH ) remove the top item ( POP ) look at the top item, without removing it check to see if the stack is empty We can have a stack of any type of variable we like: ints, Squares, floats, strings, etc.
Background image of page 3

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
The Stack I can… Push 5 on the stack. 5 Push -3 on the stack. -3 Push 9 on the stack. 9 Pop the top of the stack. Push 4 on the stack. 4 Pop the top of the stack Pop the top of the stack Pop the top of the stack Note: You can only access the top item of the stack, since the other items are covered. Note : The stack is called a Last-In-First-Out data structure. Can you figure out why?
Background image of page 4
Stacks Question : What type of data structures can we used to implement a stack? typedef int DataType; class Stack { public: Stack(); / / c’tor bool push(DataType i); bool pop(DataType & v); bool is_empty(void); bool peek_top(DataType & v); private: ... }; void main(void) { Stack is; int n = 30, a; is.push(10); is.push(20); is.peek_top(a); cout << a; is.push(n); is.pop(a); cout << a; is.push(15); is.pop(a); cout << a; is.pop(a); cout << a; is.pop(a); cout << a; }
Background image of page 5

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Stacks const int SIZE = 100; class Stack { public: Stack() { bool push(DataType val) { if (m_top >= SIZE) return(false); m_stack[m_top] = val; m_top += 1; return(true); } bool pop(DataType &v) { if (m_top == 0) return(false); m_top -= 1; v = m_stack[m_top]; return(true); } ... private: DataType m_stack[SIZE]; int m_top; }; void main(void) { Stack is; int a; is.push(5); is.push(10); is.pop(a); cout << a; is.push(7); } is m_top m_stack 0 1 2 ... 99 0 a 5 1 10 2 1 10 7 0 >= 100? ] = 5 ] = 10 v 2 == 0?? v = m_stack[ 1 ] So… v = 10 7 1 >= 100? m_stack[ 1 ] = 7 5 0 7
Background image of page 6
Common Uses for Stacks Stacks are one of the most USEFUL data structures in Computer Science. They can be used for: Evaluating postfix (Reverse Polish Notation) expressions Converting from infix to postfix All kinds of searching algorithms To simulate recursion
Background image of page 7

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Stacks Stacks are so popular that the C++ people actually wrote one for you. It’s in the Standard Template Library (STL)! #include <iostream> #include <stack> using namespace std; main() { stack < int > istack; // stack of ints istack. push (10); istack. push (20); cout << istack. top (); // get top value istack. pop (); // kill top value if (istack. empty () == false) cout << istack. size (); } Note : The STL pop() command simply removes the top item from the stack, but doesn’t return it . So to get the top item, before popping it, use the top() function.
Background image of page 8
Postfix Expression Evaluation Here are some infix expressions and their postfix equivalents: Infix Postfix 15 + 6 15 6 + 9 – 4 9 4 - (15 + 6) * 5 15 6 + 5 * 7 * 6 + 5 7 6 * 5 + 3 + (4 * 5) 3 4 5 * + Postfix notation is another way to write algebraic expressions. HP calculators use postfix notation . Postfix expressions are easier for a computer to compute than infix expressions, because they’re unambiguous .
Background image of page 9

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Postfix Evaluation Algorithm Inputs : postfix expression string Output : number representing answer Private data : a stack 1.
Background image of page 10
Image of page 11
This is the end of the preview. Sign up to access the rest of the document.

Page1 / 32

lecture5 - Wednesday, J anuar y 14 Stacks Queues th B ut fi...

This preview shows document pages 1 - 11. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online