New Stack Application

Embed Size (px)

Citation preview

  • 8/12/2019 New Stack Application

    1/34

    STACK

    APPLICATION

  • 8/12/2019 New Stack Application

    2/34

    MAIN OBJECTIVE

    Postfix evaluation

    Infix to Postfix conversion

    Expression evaluation

  • 8/12/2019 New Stack Application

    3/34

    EVALATION O E!P"ESSIONS

    Consists of operators an#

    operan#s$

    A pro%ra&&in% lan%ua%e supports

    several 'in#s of operators (it)

    so&e priorit* values$

    X = A/B * * C + D X E A * C

  • 8/12/2019 New Stack Application

    4/34

    EVALATION O E!P"ESSIONS

    I$ Or#erin% of operation+ priorit*

    of operation$

    II$ ,irection of operation

  • 8/12/2019 New Stack Application

    5/34

    ,I"ECTION O OPE"ATIONS

    I$ Left to ri%)t

    II$ "i%)t to left

    For Example:

    A - - B - - C ./ A - - 0B- -C1

  • 8/12/2019 New Stack Application

    6/34

    EVAL2ATION O E!P"ESSIONS

    Infix notation 3 A 4 B

    Postfix notation 3 AB4

    Prefix notation 3 4AB

    5 6a*s to represent an expression3

    Co&piler uses postfix notation for

    evaluatin% expressions$

  • 8/12/2019 New Stack Application

    7/34

    EVAL2ATION O

    E!P"ESSIONS

    Examples:

    71 Infix3 A- B+ C

    Postfix 3 AB - C+

    81 Infix 3 A + B - - C 4 , - E 9A - C

    Postfix 3 ABC - - + , E - 4 AC - .

  • 8/12/2019 New Stack Application

    8/34

    A,VANTA:ES O POSTI!

    NOTATIONS

    7$ Nee# for parent)esis is eli&inate#$

    For Example:T)e follo(in% expression

    (it) an# (it)out t)e parent)esis (ill)ave t)e sa&e postfix notation

    A + 0B - - C1 4 0, - E1 9 A - C

  • 8/12/2019 New Stack Application

    9/34

    A,VANTA:ES O POSTI!

    NOTATIONS

    8$ Priorit* of operators is eli&inate#$

    5$ Evaluation process is &uc) si&pler

    t)an atte&ptin% a #irect evaluation

    fro& infix notation$

  • 8/12/2019 New Stack Application

    10/34

    EVAL2ATIN: A POSTI!

    E!P"ESSION 2SIN: A STACK

    E!P"ESSION3 5; 4 8 - 0Postfix Notation1

    S*&

  • 8/12/2019 New Stack Application

    11/34

    POSTI! EVAL2ATION

    AL:O"IT=M

    Place operan#s on stac' until (e fin# an

    operator$

    "e&ove fro& t)e stac'> t)e correct

    nu&

  • 8/12/2019 New Stack Application

    12/34

    ,ECLA"ATION

    ? #efine MA!@STACK@SIE 7

    ? #efine MA!@E!P"@SIE 7

    t*pe#ef enu& lparen> rparen> plus> &inus

    ti&es> #ivi#e> &o#> eos> operan#D prece#ence

    int stac'FMA!@STACK@SIEG +-%lo

  • 8/12/2019 New Stack Application

    13/34

    2NCTION TO EVAL2ATE A

    POSTI! E!P"ESSION

    int eval 0voi#1

    +- evaluate a postfix expression> expr

    &aintaine# as a %lo

  • 8/12/2019 New Stack Application

    14/34

    2NCTION TO EVAL2ATE A

    POSTI! E!P"ESSION

    prece#ence to'en

    c)ar s*& op8

    int n +-Counter t)e expression strin%

    int top .7

    to'en %et@to'en 0s*& n1

  • 8/12/2019 New Stack Application

    15/34

    POSTI! E!P"ESSION

    EVAL2ATION3 2SIN: A STACK

    ()ile 0to'en eos1

    if 0to'en operan#1

    a## 0top> s*&

  • 8/12/2019 New Stack Application

    16/34

    POSTI! E!P"ESSION

    EVAL2ATION

    op8 #elete 0top1

    op7 #elete 0top1

    s(itc) 0to'en1

    case plus3 a##0top> op74op81

  • 8/12/2019 New Stack Application

    17/34

    POSTI! E!P"ESSION

    EVAL2ATION

    to'en %et@to'en0s*& n1 D

    return #elete 0top1 +- text-+

    D

  • 8/12/2019 New Stack Application

    18/34

    2NCTION TO :ET A TOKEN "OM

    INP2T ST"IN:

    prece#ence %et@to'en0c)ar -s*& int -n1

    + - %et t)e next to'en > s*& t)e to'en is

    represente# ()ic) is

    returne# in t)e function na&e-+

  • 8/12/2019 New Stack Application

    19/34

    2NCTION TO :ET A TOKEN

    "OM INP2T ST"IN:

    s(itc) 0-s*&

  • 8/12/2019 New Stack Application

    20/34

    AL:O"IT=M O" INI! TO

    POSTI! T"ANSLATION

    I$ ull* parent)esie t)e expression

    II$Move all operators so t)at t)e* replacet)eir correspon#in% ri%)t parent)esis

    III$ ,elete all parent)eses

  • 8/12/2019 New Stack Application

    21/34

    AL:O"IT=M O" INI! TO

    POSTI! T"ANSLATION

    E!AMPLE3

    000A + 0B - - C11 4 0 , - E 1 1 9 0A - C 1 1

    A B C - -+ , E - 4 A C - .

  • 8/12/2019 New Stack Application

    22/34

    AL:O"IT=M O" INI! TO

    POSTI! T"ANSLATION

    ,ra(

  • 8/12/2019 New Stack Application

    23/34

    AL:O"IT=M O" INI! TO

    POSTI! T"ANSLATION

    Or#er of operan#s is t)e sa&e in

    A+B--C4,-E.A-C is ABC--+,E -4AC-.

    Postfix can

  • 8/12/2019 New Stack Application

    24/34

    AL:O"IT=M O" INI! TO

    POSTI! T"ANSLATION

    Q T)e

  • 8/12/2019 New Stack Application

    25/34

    STACK BASE, AL:O"IT=M

    E!AMPLE3 A4 B - C

    Next to'en

    A

    +

    B

    *

    C

    Stac'

    empty

    +

    +

    +*

    +*

    Output

    A

    A

    AB

    AB

    ABC

    inal output A B C - - 0Postfix)

  • 8/12/2019 New Stack Application

    26/34

    STACK BASE, AL:O"IT=M

    E!AMPLE 83 A-0B4C1-, ABC4-,-

    Next to'en

    none

    A

    *

    (

    B

    +C

    Stac'

    empty

    empty

    *

    *(

    *(

    *(+*(+

    Output

    none

    A

    A

    A

    AB

    ABABC

  • 8/12/2019 New Stack Application

    27/34

    STACK BASE, AL:O"IT=M

    At t)is point> (e (ant to unstac' #o(n

    to t)e correspon#in% left parent)eses an#

    t)en #elete t)e left an# ri%)t parent)eses$

  • 8/12/2019 New Stack Application

    28/34

    STACK BASE, AL:O"IT=M

    Next to'en

    1

    -

    ,

    #one

    Stac'

    -

    -

    -

    e&pt*

    Output

    ABC4

    ABC4-

    ABC4-,

    ABC4-,-

  • 8/12/2019 New Stack Application

    29/34

  • 8/12/2019 New Stack Application

    30/34

    2NCTION TO CONVE"T "OM

    INI! TO POSTI!

    voi# postfix 0voi#1

    +- output t)e postfix of t)e expressions fro& infix

    expression> t)e expression strin%> t)e stac' an# top are%lo

  • 8/12/2019 New Stack Application

    31/34

    2NCTION TO CONVE"T "OM

    INI! TO POSTI!

    for 0to'en %et@to'en0s*& n1

    to'en eos to'en %et@to'en0s*&

    n11

    if 0to'en operan#1

    printf0Qc> s*&

  • 8/12/2019 New Stack Application

    32/34

    2NCTION TO CONVE"T "OM

  • 8/12/2019 New Stack Application

    33/34

    2NCTION TO CONVE"T "OM

    INI! TO POSTI!

    else

    +- re&ove an# print s*& to'en1 DD

    2NCTION TO CONVE"T "OM

  • 8/12/2019 New Stack Application

    34/34

    2NCTION TO CONVE"T "OM

    INI! TO POSTI!

    ()ile 0to'en #elete0top11 eos1

    printf@to'en0to'en1

    printf 0Qn1

    D