Ciao a tutti,
sto studiando le strutture dati in c++.
Ho questo pezzo di codice che valuta una espressione postfissa in cui compaiono addizione e moltiplicazione (notazione polacca) basato sull'utilizzo di una pila:
Vorrei capire meglio la logica per utilizzare la pila per il calcolo e cosa significa questa riga:codice:#include <iostream> #include <string> #include “pila.h” int main( int argc, char *argv[] ){ char *a = argv[1] ; int N = strlen(a); pila<int> postf(N); int el; for (int i = 0; i < N; i++){ if (a[i] == '+'){ el = postf.leggiPila(); postf.fuoriPila(); postf.inPila( el + postf.leggiPila()); postf.fuoriPila() } if (a[i] == '*'){ el = postf.leggiPila(); postf.fuoriPila(); postf.inPila(el * postf.leggiPila()); postf.fuoriPila() } if ((a[i] >= '0') && (a[i] <= '9')){ el = postf.leggiPila(); postf.fuoriPila(); postf.inPila(10 * el + (a[i++]-'0')); } } cout << postf.fuoriPila() << endl; }
postf.inPila(10 * el + (a[i++]-'0'));
Grazie!