Raga ho scritto un algoritmo per cancellare un nodo casuale dalla mia lista la logica l'ho capita benissimo con un puntatore punto all'elemento prima da cancellare mi sposto in avanti di 1 nodo con il puntatore"originale" e collego quello "fake" a quello originale ma non mi funziona vi posto il sorgente :
// inizio è la mia lista e num è un numero che precedentemente è stato generato casualmente tra i possibili contando i nodi della lista
struct nodo *cancella_nodo(struct nodo*inizio,int num)
{
int i=0;
struct nodo *old;
old=inizio;
if((num==0)&&conta_nodi(inizio)==1)// c'è un solo elemento e si deve anche cancellare
{
inizio=(struct nodo*)malloc(sizeof(struct nodo));//nuova lista
printf("hai perso tutti gli oggetti magici\n");
return inizio;}
for(i=0;i<num;i++)//uso il for perchè so già quante volte ripetere il ciclo
inizio=inizio->next;
old=inizio->next;
inizio=inizio->next;
old=inizio;
return old;
}