stacks dsa waris

70
STACK & ITS APPLICATIONS Presented By: Waris Ali

Upload: alihaider

Post on 02-Jun-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 1/70

STACK & ITS APPLICATIONSPresented By: Waris Ali

Page 2: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 2/70

Stacks

• Stacks in real life: stack of books, stack of plates

• Add new items at the top

• Remove an item from the top

Stack data structure similar to real life: collection ofelements arranged in a linear order.

• Can only access element at the top

2

Page 3: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 3/70

Stack Operations

• Push(X) – insert X as the top element of the stack

• Pop() – remove the top element of the stack and return it.

• Top() – return the top element without removing it from the

stack.

3

Page 4: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 4/70

Stack Operations

push(2)

top 2

push(5)

top

2

5

push(7)

top

2

5

7

push(1)

top

2

5

7

1

1 pop()

top

2

57

push(21)

top

2

57

21

21 pop()

top

2

57

7 pop()

2

5top

5 pop()

2top

4

Page 5: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 5/70

Stack Operations

• The last element to go into the stack is the first to comeout: LIFO  – Last In First Out.

• What happens if we call pop() and there is no element?• Have IsEmpty() boolean function that returns true if stack is empty,

false otherwise.

• Throw StackEmpty exception: advanced C++ concept.

What happens if we call push() and the stack is alreadyfull?• IsFull() boolean function

5

Page 6: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 6/70

6

Stack Operations

The stack

 push

 push

 pop (returned)

 pop (returned)

top (returned)

 push

depth

LIFO: Last-In-First-Out

Page 7: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 7/70

Stack Implementation: Array

• Worst case for insertion and deletion from an array wheninsert and delete from the beginning: shift elements to theleft.

• Best case for insert and delete is at the end of the array – no need to shift any elements.

• Implement push() and pop() by inserting and deleting atthe end of an array.

7

Page 8: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 8/70

Stack using an Array

top

2

5

7

12 5 7 1

0 1 32 4

top = 3

8

Page 9: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 9/70

Stack using an Array

• In case of an array, it is possible that the array may “fill-up” if we push enough elements. 

• Have a boolean function IsFull() which returns true if

stack (array) is full, false otherwise.

• We would call this function before calling push(x).

9

Page 10: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 10/70

Stack Operations with Array

int pop()

{

return A[current--];

}

void push(int x)

{

 A[++current] = x;

}

10

Page 11: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 11/70

Stack Operations with Array

int top(){return A[current];

}int IsEmpty(){

return ( current == -1 );}int IsFull(){

return ( current == size-1);

}

• A quick examination shows that all five operations takeconstant time.

11

Page 12: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 12/70

Stack Using Linked List

• We can avoid the size limitation of a stack implementedwith an array by using a linked list to hold the stackelements.

• As with array, however, we need to decide where to insertelements in the list and where to delete them so that pushand pop will run the fastest.

12

Page 13: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 13/70

Stack Using Linked List

• We can avoid the size limitation of a stack implementedwith an array by using a linked list to hold the stackelements.

• As with array, however, we need to decide where to insertelements in the list and where to delete them so that pushand pop will run the fastest.

13

Page 14: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 14/70

Stack Using Linked List

• For a singly-linked list, insert at start or end takesconstant time using the head and current pointersrespectively.

• Removing an element at the start is constant timebut removal at the end required traversing the listto the node one before the last.

• Make sense to place stack elements at the startof the list because insert and removal areconstant time.

14

Page 15: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 15/70

Stack Using Linked List

• No need for the current pointer; head is enough.

top

2

5

7

11 7 5 2

head

15

Page 16: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 16/70

Stack Operation: List

int pop(){

int x = head->get();

 Node* p = head;

head = head->getNext();

delete p;

return x;}

top

2

5

7 1 7 5 2

head

16

1

Page 17: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 17/70

Stack Operation: List

void push(int x){

 Node* newNode = new Node();

newNode->set(x);

newNode->setNext(head);

head = newNode;}

top

2

5

7

9

7 5 2

head

 push(9)

9

newNode

17

18

Page 18: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 18/70

Stack Operation: List

int top(){

return head->get();}int IsEmpty()

{ return ( head == NULL );}

• All four operations take constant time.

18

19

Page 19: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 19/70

Stack: Array or List

• Since both implementations support stackoperations in constant time, any reason tochoose one over the other?

• Allocating and deallocating memory for list nodes

does take more time than preallocated array.• List uses only as much memory as required bythe nodes; array requires allocation ahead oftime.

• List pointers (head, next) require extra memory.• Array has an upper limit; List is limited bydynamic memory allocation.

19

20

Page 20: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 20/70

Use of Stack

• Example of use: prefix, infix, postfix expressions.• Consider the expression A+B: we think of applying the

operator  “+” to the operands A and B.

• “+” is termed a binary operator : it takes two operands.

Writing the sum as A+B is called the infix  form of theexpression.

20

21

Page 21: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 21/70

Prefix, Infix, Postfix

• Two other ways of writing the expression are

+ A B  prefix  A B +  postfix

• The prefixes “pre” and “post” refer to the position of the

operator with respect to the two operands.

21

22

Page 22: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 22/70

Prefix, Infix, Postfix

• Consider the infix expressionA + B * C

• We “know” that multiplication is done before addition. 

The expression is interpreted asA + ( B * C )

• Multiplication has precedence over addition.

22

23

Page 23: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 23/70

Prefix, Infix, Postfix

• Conversion to postfix

A + ( B * C ) infix form

23

24

Page 24: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 24/70

Prefix, Infix, Postfix

• Conversion to postfix

A + ( B * C ) infix form

A + ( B C * ) convert multiplication

24

25

Page 25: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 25/70

Prefix, Infix, Postfix

• Conversion to postfix

A + ( B * C ) infix form

A + ( B C * ) convert multiplication

A ( B C * ) + convert addition

25

26

Page 26: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 26/70

Prefix, Infix, Postfix

• Conversion to postfix

A + ( B * C ) infix form

A + ( B C * ) convert multiplication

A ( B C * ) + convert addition

A B C * + postfix form

26

27

Page 27: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 27/70

Prefix, Infix, Postfix

• Conversion to postfix

(A + B ) * C infix form

27

28

Page 28: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 28/70

Prefix, Infix, Postfix

• Conversion to postfix

(A + B ) * C infix form

( A B + ) * C convert addition

28

29

Page 29: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 29/70

Prefix, Infix, Postfix

• Conversion to postfix

(A + B ) * C infix form

( A B + ) * C convert addition

( A B + ) C * convert multiplication

29

30

Page 30: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 30/70

Prefix, Infix, Postfix

• Conversion to postfix

(A + B ) * C infix form

( A B + ) * C convert addition

( A B + ) C * convert multiplication

A B + C * postfix form

30

31

Page 31: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 31/70

Precedence of Operators

• The five binary operators are: addition, subtraction,multiplication, division and exponentiation.

• The order of precedence is (highest to lowest)

• Exponentiation  

• Multiplication/division *, /

• Addition/subtraction +, -

31

32

Page 32: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 32/70

Precedence of Operators

• For operators of same precedence, the left-to-right ruleapplies:

A+B+C means (A+B)+C.

• For exponentiation, the right-to-left rule applies

A  B  C means A  ( B  C )

33

Page 33: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 33/70

Infix to Postfix

Infix Postfix

A + B A B +

12 + 60 – 23 12 60 + 23 – 

(A + B)*(C – D ) A B + C D – *A  B * C – D + E/F A B  C*D – E F/+

34

Page 34: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 34/70

Infix to Postfix

Infix Postfix

A + B A B +

12 + 60 – 23 12 60 + 23 – 

(A + B)*(C – D ) A B + C D – *A  B * C – D + E/F A B  C*D – E F/+

35

Page 35: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 35/70

Infix to Postfix

• Note that the postfix form an expression does not requireparenthesis.

• Consider „4+3*5‟ and „(4+3)*5‟. The parenthesis are not

needed in the first but they are necessary in the second.

• The postfix forms are:4+3*5 435*+(4+3)*5 43+5*

36

Page 36: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 36/70

Converting Infix to Postfix

• Consider the infix expressions „A+B*C‟ and „ (A+B)*C‟.

• The postfix versions are „ABC*+‟ and „AB+C*‟. 

• The order of operands in postfix is the same as the infix.

In scanning from left to right, the operand „A‟ can beinserted into postfix expression.

37

Page 37: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 37/70

Converting Infix to Postfix

• The „+‟ cannot be inserted until its second operand hasbeen scanned and inserted.

• The „+‟ has to be stored away until its proper position isfound.

• When „B‟ is seen, it is immediately inserted into the postfixexpression.

• Can the „+‟ be inserted now? In the case of „A+B*C‟cannot because * has precedence.

38

Page 38: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 38/70

Converting Infix to Postfix

• In case of „(A+B)*C‟, the closing parenthesis indicates that

„+‟ must be performed first. 

• Assume the existence of a function „prcd(op1,op2)‟ where

op1 and op2 are two operators.

• Prcd(op1,op2) returns TRUE if op1 has precedence overop2, FASLE otherwise.

39

Page 39: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 39/70

Converting Infix to Postfix

• prcd(„*‟,‟+‟) is TRUE 

• prcd(„+‟,‟+‟) is TRUE 

• prcd(„+‟,‟*‟) is FALSE

Here is the algorithm that converts infix expression to itspostfix form.

• The infix expression is without parenthesis.

40

Page 40: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 40/70

Converting Infix to Postfix1. Stack s;

2. While( not end of input ) {

3.   c = next input character;

4.   if( c is an operand )

5.   add c to postfix string;

6.   else {

7.   while( !s.empty() && prcd(s.top(),c) ){8.   op = s.pop();

9.   add op to the postfix string;

10.   }

11.   s.push( c );

12.   }13.   while( !s.empty() ) {

14.   op = s.pop();

15.   add op to postfix string;

16.   }

41

Page 41: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 41/70

Converting Infix to Postfix

• Example: A + B * Csymb postfix stack

A A

42

Page 42: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 42/70

Converting Infix to Postfix

• Example: A + B * Csymb postfix stack

A A

+ A +

43

Page 43: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 43/70

Converting Infix to Postfix

• Example: A + B * Csymb postfix stack

A A

+ A +B AB +

44

Page 44: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 44/70

Converting Infix to Postfix

• Example: A + B * Csymb postfix stack

A A

+ A +B AB +

* AB + *

45

Page 45: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 45/70

Converting Infix to Postfix

• Example: A + B * Csymb postfix stack

A A

+ A +B AB +

* AB + *

C ABC + *

46

Page 46: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 46/70

Converting Infix to Postfix

• Example: A + B * Csymb postfix stack

A A

+ A +

B AB +

* AB + *

C ABC + *

ABC * +

47

Page 47: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 47/70

Converting Infix to Postfix

• Example: A + B * Csymb postfix stack

A A

+ A +

B AB +

* AB + *

C ABC + *

ABC * +ABC * +

48

Page 48: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 48/70

Converting Infix to Postfix

• Handling parenthesis

• When an open parenthesis „(„ is read, it must be pushed

on the stack.

• This can be done by setting prcd(op,„(„ ) to be FALSE.

• Also, prcd( „(„,op ) == FALSE which ensures that an

operator after „(„ is pushed on the stack. 

49

Page 49: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 49/70

Converting Infix to Postfix

• When a „)‟ is read, all operators up to the first „(„ must be

popped and placed in the postfix string.

• To do this, prcd( op,‟)‟ ) == TRUE. 

• Both the „(„ and the „)‟ must be discarded: prcd( „(„,‟)‟ ) ==

FALSE.

• Need to change line 11 of the algorithm.

50

Page 50: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 50/70

Converting Infix to Postfix

if( s.empty() || symb != „)‟ )s.push( c );else

s.pop(); // discard the „(„

prcd( „(„, op ) = FALSE for any operator  prcd( op, „)‟ ) = FALSE for any operator

other than „)‟ 

prcd( op, „)‟ ) = TRUE for any operatorother than „(„ prcd( „)‟, op ) = error for any operator. 

51

Page 51: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 51/70

Converting Infix to Postfix

Example: (A + B) * Csymb postfix stack( (A A (

+ A ( +B AB ( +) AB +* AB + *

C AB + C *AB + C *

52

Page 52: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 52/70

Evaluating Postfix

• Each operator in a postfix expression refers to theprevious two operands.

• Each time we read an operand, we push it on a stack.

• When we reach an operator, we pop the two operandsfrom the top of the stack, apply the operator and push theresult back on the stack.

53

Page 53: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 53/70

Evaluating Postfix

Stack s;while( not end of input ) {

e = get next element of input

if( e is an operand )

s.push( e );

else {

op2 = s.pop();

op1 = s.pop();

value = result of applying operator „e‟ to op1 and op2; 

s.push( value );}

}

finalresult = s.pop();

54

Page 54: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 54/70

Evaluating Postfix

Evaluate 6 2 3 + - 3 8 2 / + * 2  3 +Input op1 op2 value stack

6 6

55

Page 55: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 55/70

Evaluating Postfix

Evaluate 6 2 3 + - 3 8 2 / + * 2  3 +Input op1 op2 value stack

6 6

2 6,2

56

Page 56: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 56/70

Evaluating Postfix

Evaluate 6 2 3 + - 3 8 2 / + * 2  3 +Input op1 op2 value stack

6 6

2 6,2

3 6,2,3

57

Page 57: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 57/70

Evaluating Postfix

Evaluate 6 2 3 + - 3 8 2 / + * 2  3 +Input op1 op2 value stack

6 6

2 6,2

3 6,2,3

+ 2 3 5 6,5

58

Page 58: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 58/70

Evaluating Postfix

Evaluate 6 2 3 + - 3 8 2 / + * 2  3 +Input op1 op2 value stack

6 6

2 6,2

3 6,2,3

+ 2 3 5 6,5- 6 5 1 1

59

Page 59: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 59/70

Evaluating Postfix

Evaluate 6 2 3 + - 3 8 2 / + * 2  3 +Input op1 op2 value stack

6 6

2 6,2

3 6,2,3

+ 2 3 5 6,5- 6 5 1 1

3 6 5 1 1,3

60

Page 60: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 60/70

Evaluating Postfix

Evaluate 6 2 3 + - 3 8 2 / + * 2  3 +Input op1 op2 value stack

6 6

2 6,2

3 6,2,3

+ 2 3 5 6,5- 6 5 1 1

3 6 5 1 1,3

8 6 5 1 1,3,8

61

Page 61: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 61/70

Evaluating Postfix

Evaluate 6 2 3 + - 3 8 2 / + * 2  3 +Input op1 op2 value stack

6 6

2 6,2

3 6,2,3

+ 2 3 5 6,5- 6 5 1 1

3 6 5 1 1,3

8 6 5 1 1,3,8

2 6 5 1 1,3,8,2

62

Page 62: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 62/70

Evaluating Postfix

Evaluate 6 2 3 + - 3 8 2 / + * 2  3 +Input op1 op2 value stack

6 6

2 6,2

3 6,2,3

+ 2 3 5 6,5- 6 5 1 1

3 6 5 1 1,3

8 6 5 1 1,3,8

2 6 5 1 1,3,8,2

 / 8 2 4 1,3,4

63

Page 63: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 63/70

Evaluating Postfix

Evaluate 6 2 3 + - 3 8 2 / + * 2  3 +Input op1 op2 value stack

6 6

2 6,2

3 6,2,3

+ 2 3 5 6,5- 6 5 1 1

3 6 5 1 1,3

8 6 5 1 1,3,8

2 6 5 1 1,3,8,2

 / 8 2 4 1,3,4

+ 3 4 7 1,7

64

Page 64: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 64/70

Evaluating Postfix

Evaluate 6 2 3 + - 3 8 2 / + * 2  3 +Input op1 op2 value stack

6 6

2 6,2

3 6,2,3

+ 2 3 5 6,5- 6 5 1 1

3 6 5 1 1,3

8 6 5 1 1,3,8

2 6 5 1 1,3,8,2

 / 8 2 4 1,3,4

+ 3 4 7 1,7

* 1 7 7 7

65

Page 65: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 65/70

Evaluating Postfix

Evaluate 6 2 3 + - 3 8 2 / + * 2  3 +Input op1 op2 value stack

6 6

2 6,2

3 6,2,3

+ 2 3 5 6,5- 6 5 1 1

3 6 5 1 1,3

8 6 5 1 1,3,8

2 6 5 1 1,3,8,2

 / 8 2 4 1,3,4

+ 3 4 7 1,7

* 1 7 7 7

2 1 7 7 7,2

66

Page 66: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 66/70

Evaluating Postfix

Evaluate 6 2 3 + - 3 8 2 / + * 2  3 +Input op1 op2 value stack

6 6

2 6,2

3 6,2,3

+ 2 3 5 6,5

- 6 5 1 1

3 6 5 1 1,3

8 6 5 1 1,3,8

2 6 5 1 1,3,8,2

 / 8 2 4 1,3,4

+ 3 4 7 1,7

* 1 7 7 7

2 1 7 7 7,2

7 2 49 49

67

Page 67: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 67/70

Evaluating Postfix

Evaluate 6 2 3 + - 3 8 2 / + * 2  3 +Input op1 op2 value stack

6 6

2 6,2

3 6,2,3

+ 2 3 5 6,5

- 6 5 1 1

3 6 5 1 1,3

8 6 5 1 1,3,8

2 6 5 1 1,3,8,2

 / 8 2 4 1,3,4

+ 3 4 7 1,7

* 1 7 7 7

2 1 7 7 7,2

7 2 49 49

3 7 2 49 49,3

68

Page 68: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 68/70

Evaluating Postfix

Evaluate 6 2 3 + - 3 8 2 / + * 2  3 +Input op1 op2 value stack

6 6

2 6,2

3 6,2,3

+ 2 3 5 6,5

- 6 5 1 1

3 6 5 1 1,3

8 6 5 1 1,3,8

2 6 5 1 1,3,8,2

 / 8 2 4 1,3,4

+ 3 4 7 1,7

* 1 7 7 7

2 1 7 7 7,2

7 2 49 49

3 7 2 49 49,3

+ 49 3 52 52

69

Page 69: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 69/70

Evaluating Postfix

Evaluate 6 2 3 + - 3 8 2 / + * 2  3 +Input op1 op2 value stack

6 6

2 6,2

3 6,2,3

+ 2 3 5 6,5

- 6 5 1 1

3 6 5 1 1,3

8 6 5 1 1,3,8

2 6 5 1 1,3,8,2

 / 8 2 4 1,3,4

+ 3 4 7 1,7

* 1 7 7 7

2 1 7 7 7,2

7 2 49 49

3 7 2 49 49,3

+ 49 3 52 52

70

Page 70: Stacks DSA Waris

8/10/2019 Stacks DSA Waris

http://slidepdf.com/reader/full/stacks-dsa-waris 70/70

End of Lecture