220 likes | 388 Views
Chapter 7. Stacks. Outline. Stacks Further Stack Examples Pushing/Popping a Stack Class Stack Static stack class Dynamic stack class STL list Stack applications. Stacks. A stack is a sequence of items that are accessible at only one end of the sequence. Further Stack Examples.
E N D
Chapter 7 Stacks
Outline • Stacks • Further Stack Examples • Pushing/Popping a Stack • Class Stack • Static stack class • Dynamic stack class • STL list • Stack applications
Stacks • A stack is a sequence of items that are accessible at only one end of the sequence.
Pushing/Popping a Stack • Because a pop removes the item last added to the stack, we say that a stack has LIFO (last-in/first-out) ordering.
§- Stack - Storage Structure with insert (push) and erase (pop) operations occur at one end, called the top of the stack. - The last element in is the first element out of the stack, so a stack is a LIFO structure. 6
CLASS stack CLASS stack <stack> <stack> Constructor Operations stack(); Create an empty stack bool empty(); const Check whether the stack is empty. Return true if it is empty and false otherwise.
CLASS stack <stack> Operations void pop(); Remove the item from the top of the stack. Precondition: The stack is not empty. Postcondition: Either the stack is empty or the stack has a new topmost item from a previous push. void push(const T& item); Insert the argument item at the top of the stack. Postcondition: The stack has a new item at the top.
CLASS stack <stack> Operations int size() const; Return the number of items on the stack. T& top() const; Return a reference to the value of the item at the top of the stack. Precondition: The stack is not empty. const T& top() const; Constant version of top().
Stack class • Static stack class (built on array): P1074 • Dynamic stack class (built on linked list): P1085 • STL stack: d_stack.h
§- Recursion - The system maintains a stack of activation records that specify: 1) the function arguments 2) the local variables/objects 3) the return address - The system pushes an activation record when calling a function and pops it when returning. 18
§- Postfix/RPN Expression Notation - places the operator after its operands - easy to evaluate using a single stack to hold operands. - The rules: 1) Immediately push an operand onto the stack. 2) For a binary operator, pop the stack twice, perform the operation, and push the result onto the stack. 3) At the end a single value remains on the stack. This is the value of the expression. 20
§- Infix notation - A binary operator appears between its operands. - More complex than postfix, because it requires the use of operator precedence and parentheses. - In addition, some operators are left-associative, and a few are right-associative. 22