16
A Data Structure

stack-111104232459-phpapp02

Embed Size (px)

DESCRIPTION

stack

Citation preview

Page 1: stack-111104232459-phpapp02

A Data Structure

Page 2: stack-111104232459-phpapp02

What is a Stack

Stack Operations

LIFO Stack

Animation Depicting Push Operation

Animation Depicting Pop Operation

Array Implementation of Stack

Applications of stackChecking for balanced bracesConverting Infix Expression to PostfixPostfix calculator

Page 3: stack-111104232459-phpapp02

What is a Stack?A stack is a Last In, First Out (LIFO) data structure,objects inserted last are the first to come out of the stack

Anything added to the stack goes on the “top” of the stack

Anything removed from the stack is taken from the “top” of the stack

Things are removed in the reverse order from that in which they were inserted

Page 4: stack-111104232459-phpapp02

Stack Operations

PUSH Adds the object to the top of the stack

POP Removes the object at the top of the

stack and returns it

PEEK Returns the top object of the stack but

does not remove it from the stack

ISEMPTY Returns True if Stack is empty

Page 5: stack-111104232459-phpapp02

A LIFO Stack

Top

Bottom

Stack Pointer

Push Pop

Page 6: stack-111104232459-phpapp02
Page 7: stack-111104232459-phpapp02
Page 8: stack-111104232459-phpapp02

array Implementation of Stack

A[1] A[2] …. …. …. A[n]

w yPop

Stack pointer J=n

Stack Full

Stack pointer J=2

Before Push

Stack pointer J=3

After Push

After many Push Ops

Push X w y x

Stack PointerJ=0

Stack Empty

After many Pop ops

Stack PointerJ=3

Before Pop

Stack PointerJ=2

After Pop

Page 9: stack-111104232459-phpapp02

Checking for Balanced Braces

([]({()}[()])) is balanced; ([]({()}[())]) is not

Simple counting is not enough to check balance

You can do it with a stack: going left to right, If you see a (, [, or {, push it on the

stack If you see a ), ], or }, pop the stack

and check whether you got the corresponding (, [, or {

When you reach the end, check that the stack is empty

Page 10: stack-111104232459-phpapp02
Page 11: stack-111104232459-phpapp02

Converting Infix Expressions to Equivalent Postfix Expressions

Infix Expression a+b

Postfix Expression ab+

An infix expression can be evaluated by first being converted into an equivalent postfix expression

Facts about converting from infix to postfix Operands always stay in the same order

with respect to one another All parentheses are removed

Page 12: stack-111104232459-phpapp02

Algorithm : Converting Infix Expression to

Postfix using stack

Suppose X is an arithmetic expression written in infix notation. This algorithm finds the equivalent postfix expression Y.

1. Push "(" onto STACK, and add ")" to the end of X.2. Scan X from left to right and REPEAT Steps 3 to 6 for each element of X UNTIL the

STACK is empty : 3. If an operand is encountered, add it to Y. 4. If a left parenthesis is encountered, push it onto STACK. 5. If an operator is encountered, then :

(a) Repeatedly pop from STACK and add to Y each operator (on the top of STACK) which has the same precedence as or higher precedence than operator.(b) Add operator to STACK./* End of If structure * /6. If a right parenthesis is encountered, then :(a) Repeatedly pop from STACK and add to Y each operator (on the top of STACK)until a left parenthesis is encountered.(b) Remove the left parenthesis. [Do not add the left parenthesis to Y]./* End of If structure * //* End of Step 2 loop * /7. END.

Page 13: stack-111104232459-phpapp02

A trace of the algorithm that converts the infix expression

a - (b + c * d)/e to postfix form

Page 14: stack-111104232459-phpapp02

A postfix calculator When an operand is entered, the

calculator Pushes it onto a stack

When an operator is entered, the calculator Applies it to the top (one or two,

depending on unary or binary operator) operand(s) of the stack

Pops the operands from the stack

Pushes the result of the operation on the stack

Page 15: stack-111104232459-phpapp02

The action of a postfix calculator when evaluating the expression 2 * (3 + 4)

Postfix Notation--- 2 3 4 + *

Page 16: stack-111104232459-phpapp02

Acknowledgement

Data Structures BY Tanenbaum Internet Computer Science C++ A textbook for class XII -By

Sumita Arora

prepared by- Seema kaushik,

Computer science department,DAV public school, sector-14, gurgaon