Originariamente inviato da Cesaropa12
Mi rispondo da solo: ho provato a dichiarare v, all'interno della funzione AddAdj, come un puntatore a un vertice:
Vertice* v=new Vertice;
v->Ver=b;
v->Next=Adj[a];
Adj[a]=v;
E adesso tutto funziona bene. Solo non capisco, come mai i puntatori creati internamente si conservano, mentre se non sono puntatotori no.
Ciao Cesaropa,

provo a spiegare (sperando di non dire cavolate lol)

Questa versione non funziona perche

inline void AddAdj(long a,long b)
{
Vertice v;
v.Ver=b;
v.Next=Adj[a];
Adj[a]=&v;
}

In questo modo credi una struttura v di tipo Vertice di tipo automatico. Cio vuol dire che alla fine dell'elaborazione della funzione questa struttura verra distrutta. Per cui, tanto per capirci,
Adj[a] puntera poi chissā dove. (si dice che il puntatore č pendente)

Se invece scrivi

Vertice* v=new Vertice;

assegni una porzione di memoria per creare una struttura Vertice puntata da v. La memoria che hai assegnato non si distrugge dopo l'uscita a funzione. Sarā il programmatore a liberare questa area di memoria con l'istruzione delete.

Spero di essere stato abb chiaro!!! Ciauuuuu