Salve, sto implementando l'algoritmo per la visita in ampiezza per i grafi. Ecco la mia funzione

codice:
// VISITA IN AMPIEZZA               
template<class E, class P>void GrafoMat<E, P>::bfs(Nodo n) {


 ListaNodi adiacenti;
 ListaNodiPos p;
 CodaVT<E>coda(100);  
 
 
 coda.inCoda(matrice[n.getId()].etichetta);
 
 while (!coda.codaVuota()){
       
       scriviEtichetta(n.getId(),coda.leggiCoda());
       coda.fuoriCoda();
       cout<<"\n" <<matrice[n.getId()].etichetta;
       matrice[n.getId()].visitato=true;
       adiacenti = Adiacenti(n);
       p = adiacenti.begin();
       
       while(!adiacenti.end(p)){
                         
                         if((matrice[((*(adiacenti.read(p))).getId())].visitato ==(false))){
                                                                                 
                                                                                           coda.inCoda(leggiEtichetta(((*(adiacenti.read(p))).getId())));
                                                                                           
                                                                                           
                                                                                           
                                                                                          
                                                                                          }    
                                                                                           p = adiacenti.next(p); 
                                                                                           }
                                        }
                  
           
                 
 }
mi accorgo che va in un loop e non capisco il perchè. Qualcuno mi sa dare una mano nella risoluzione?

Grazie