ciao yuyeveon, per quanto riguarda G->adiacente chiedo scusa ma è solo una mia svista quando ho postato il codice (quello "originale" è corretto).
Ho provato ad aggiungere il controllo if(G) come mi hai suggerito ma ritorna sempre "errore di segmentazione".
In quel punto non dovrebbe essere tutto G ad essere null ma solo la lista degli archi (lista_archi_p), infatti con la funzione crea_grafo() viene creata la lista primaria contenente tutti i vertici e il puntatore ad ogni vertice successivo nella lista, perciò G->valore e G->vertice_succ_p non sono null pertanto quando faccio G = G->vertice_succ_p dovrei semplicemente accedere al vertice successivo e non a un puntatore null.