Premesse queste definizioni
codice:
typedef struct EDGE* EDGELIST;
struct EDGE{
    NODE nodo1;        //primo nodo dell'arco
    NODE nodo2;        //altro nodo dell'arco
    EDGELIST next;    //successivi archi
}
Volevo chiedervi se mi potete aiutare con un programma che elimina un arco da un grafo. Questo è il programma che ho in mente io, ma pare non funzionare:

codice:
void deleteArco(EDGELIST* t, NODE x, NODE y){
    if ((*t) != NULL) { 
        if( t->nodo1 == x && t->nodo2 == y){
            EDGELIST p = (*t);
            (*t) = (*t)->next;
            free(p);
        }else
            deleteArco((*t)->next, x, y);
    }
}
Spero possiate trovare qualche minuto del vostro tempo per aiutarmi perchè sono un neofita della programmazione e mi piacerebbe imparare!
Grazie mille