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:
postf.inPila(10 * el + (a[i++]-'0'));
Grazie!
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:
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;
}
Vorrei capire meglio la logica per utilizzare la pila per il calcolo e cosa significa questa riga:
postf.inPila(10 * el + (a[i++]-'0'));
Grazie!