Potresti riportare anche le funzioni di inserimento di archi e nodi?
In outdegree:
- d non dovrebbe essere un argomento della funzione, ma ciò non influisce sul calcolo.
- la flag da controllare è used (che segnala se il nodo è utilizzato o non) e non visited (che se segnala se il nodo è stato visitato durante un algoritmo di visita.
- un valore più corretto per il caso in cui non sia utilizzato è -1. 0 è un valore valido nel range della funzione (un nodo può essere isolato o terminale), -1 non lo è e segnala un errore
In indegree è sbagliata la logica. Tu devi scorrere le liste di adiacenza di ogni nodo usato (come stai già facendo) ma il confronto lo devi fare con la label di x che ti è stato passato come parametro, che, per come è implementato, è x stesso. Infatti il nome di un nodo corrisponde all'indice che ha nell'array. Motivo per cui 2 nodi non possono avere lo stesso nome.
Attento comunque che potresti avere archi duplicati nelle liste di adiacenza. Come nota a margine non ti serve necessariamente scorrere tutta la lista per ogni nodo, infatti quando trovi un arco uscente verso il nodo di interesse, se il grafo è ben costruito, non ne puoi trovare un altro uguale.

Rispondi quotando