Buongiorno a tutti,
sto cominciando a esercitarmi sulle pile, e ho trovato un esercizio parzialmente svolto dal mio professore per convertire un'espressione in notazione postifissa. Ho provato a scrivere un programma completo partendo dal suo, ma non funziona e non capisco dove sia l'errore.
#include <stdio.h>
#include <stdlib.h>
struct nodo
{
float valore;
struct nodo * prox;
};
struct nodo * testa = NULL;
void push (float v)
{
struct nodo * nuovo;
nuovo = (struct nodo *) malloc (sizeof(struct nodo));
nuovo->valore = v;
nuovo->prox = NULL;
nuovo->prox = testa;
testa = nuovo;
return;
}
float pop ()
{
float r = testa->valore;
testa = testa->prox;
return r;
}
int main()
{
int c, op1, op2, r;
c = getchar();
while (c != '\n')
{
if('0' <= c && c <= '9')
push(c - '0');
if(c == '+')
{
op2 = pop();
op1 = pop();
push (op1 + op2);
}
if(c == '-')
{
op2 = pop();
op1 = pop();
push (op1 - op2);
}
if(c == '*')
{
op2 = pop();
op1 = pop();
push (op1 * op2);
}
if(c == '/')
{
op2 = pop();
op1 = pop();
push (op1 / op2);
}
}
r = pop();
printf("%d\n", r);
exit(EXIT_SUCCESS);
}
Qualcuno può aiutarmi a capire cosa manca? Grazie mille in anticipo!