La prima cosa che salta all'occhio è che utilizzi la variabile float* a senza avere effettivamente riservato uno spazio di memoria.
Dovresti quindi dichiarare

codice:
float a;
e passare alla funzione parsifica il suo puntatore

codice:
parsifica("1 2 + 3 * \n",&a);
Questa soluzione non è comunque la più elegante!

Inoltre non passi nessun parametro alla funzione printf, che dovrebbe essere

codice:
printf("%f\n", a);
Do un'occhiata al resto e ti faccio sapere

EDIT:

nella funzione pop hai dimenticato
codice:
p = stack -> top;
e nel complesso, la gestione dei puntatori non è il massimo.