Avevo dato un occhio a quel link, ma sinceramente non ci ho capito molto sul funzionamento..
Ho comunque provato a buttar giù due righe di pseudo, per poi arrivare a questo codice che sembra funzionare (almeno teoricamente):
codice:
nodo* eliminazione(nodo *p, int val) {
if(p->dato == val)
p->dato = p->ptrsx;
if(p == NULL)
return NULL;
else
elimina(p->ptrsx);
}
int elimina(nodo *p) {
int num;
if(p->ptrsx == NULL) {
num = p->dato;
free(p);
return num;
} else if(p->ptrsx != NULL)
elimina(p->ptrdx);
}
Però mi da questo errore:
assignment makes integer from pointer without a cast
in questa riga di codice:
p->dato = p->ptrsx;
Come mai?
Ho anche provato a fare una cosa del genere, ma da lo stesso identico errore..
codice:
nodo* eliminazione(nodo *p, int val) {
nodo *r;
r = p->dato;
if(p->dato == val)
p->dato = r->ptrsx;
if(p == NULL)
return NULL;
else
elimina(p->ptrsx);
}