Questo codice non fa nulla, agisce sul parametro formale s, non sul parametro attuale:
codice:
void create (struct dato * s) {
s = NULL;
}
Fai cosi`:
codice:
void create( struct dato** s )
{
*s = NULL;
}
Stesso discorso qui:
codice:
void push (struct dato * s, int d) {
struct dato * p = (struct dato *) malloc (sizeof (struct dato));
p -> elemento = d;
p -> punt = s;
s = p;
}
codice:
void push( struct dato** s, int d )
{
struct dato* p = ( struct dato* ) malloc( sizeof( struct dato ) );
p->elemento = d;
p->punt = *s;
*s = p;
}
E qui:
codice:
void pop (struct dato * s, int * d) {
struct dato * p = s;
* d = s -> elemento;
s = s -> punt;
free (p);
}
codice:
void pop( struct dato** s, int* d )
{
struct dato* p = *s;
*d = ( *s )->elemento;
*s = ( *s )->punt;
free( p );
}
Ovviamente modifica le chiamate in modo opportuno.
(C`era un errore )