Documente Academic
Documente Profesional
Documente Cultură
Stiva
ovidiu.banias@aut.upt.ro
Cuprins
Stiva
Forma poloneză
POP
VF
i+2 PUSH
i+1
i
..
.
2
1
Stiva. Aplicabilitate
Se folosesc vectori pt. simularea stivei
x 1 dacă x 0
x 1, dacă x 12
f ( x) f ( x, y ) ac( x 1,1) dacă y 0
f ( f ( x 2)), altfel ac( x 1, ac( x, y 1)) altfel
Stiva. Manna Pnueli
x 1, dacă x 12
Funcţia Manna Pnueli f ( x)
f ( f ( x 2)), altfel
Implementare in C?
se foloseşte o structură de date de tip stiva st
x 1, dacă x 12
f ( 6) ? f ( x)
f ( f ( x 2)), altfel
11
Stiva. Ackermann
y 1 daca x 0
Funcţia Ackermann f ( x , y ) f ( x 1,1) daca y 0
f ( x 1, f ( x , y 1)) altfel
Implementare in C?
se foloseşte o structură de date de tip stiva cu 2 elemente st
5
Forma poloneză postfixată
Observații:
Input (a * (b c) d /(e f * h) i )
‘(‘,’)’ – prioritate 0
‘*‘,’/’ – prioritate 1
‘+‘,’-’ – prioritate 2
dacă (op==‘)’), se scot din stivă toţi operatorii până când (op==‘(’) şi se adaugă in
fp. Cu siguranță în acest moment, operatorii dintre paranteze vor avea aceeași
prioritate!
Forma poloneză postfixată. Exemplu
Exemplu : (a * (b c) d /(e f * h) i )
Forma poloneză postfixată. Exemplu
Exemplu : (8 / 4 * 2)
incorect
Calculul unei expresii aritmetice
Observație:
Input Output 8
4. Dacă fp[k] este operator atunci se scot din stiva st ultimii doi operanzi şi
se introduce în stivă rezultatul expresiei
3