Salve devo implentare una funzione che mi stampi tutti i nomi dei nodi che costituiscono il cammino minimo(se esiste)
tra 2 nodi passati come argomento alla funzione. Credo di dover usare una visita in ampiezza ma vista la struttura dati che utilizzo mi trovo un pò in difficoltà.
codice:
/*struct liste di adiacenza*/
struct ombra {
    char name[40];
    struct ombra *next;
   };
/*struct dei luoghi*/
struct luoghi {
    char nome[40];
    struct ombra *shadow;    
    struct luoghi *next;
   };
I nodi del grafo sono stringhe e la lista ombra rappresenta la lista di adiacenza dei nodi con distanza 1 da ogni nodo.

Utilizzo delle classiche funzioni di inserimento per inserire i nodi, nelle due liste, luoghi e ombra.
Il problema mi nasce con questa funzione che deve appunto stampare un cammino di lunghezza minima tra u e v. Se non
esiste un tale itinerario, allora restituisce un messaggio d'errore.
codice:
void cammino Ombra(char *u, char *v) {
     
  struct luoghi *t1, *t2;
  struct ombra *tmp;
     
  t1=luogo;
  t2=luogo;
  
  /* Verifico l'esistenza della localita' di nome u. */    
  while ((t1 != NULL) && (strcmp(t1->nome, u) != 0)) {
       t1=t1->next;
       }  
       
  if (t1 == NULL){
    printf("Non e' possibile!\n");                 
    return;
  }  
  
  /* Verifico l'esistenza della localita' di nome v. */ 
  while ((t2 != NULL) && (strcmp(t2->nome, v) != 0)) {
       t2=t2->next;
       }      
  
  if (t2 == NULL){
    printf("Non e' possibile!\n");
    return;
  } 

     tmp = t1->shadow;
     while ((tmp != NULL) && (strcmp(tmp->name, v) != 0)) {
       tmp=tmp->next;
       }             
       
     if (tmp != NULL) {        
            printf("%s\n", t1->nome);
            printf("%s\n", tmp->name);    
            } else {   
  
}
In cui ho controllato che v appartenga alla lista di adiacenza di u.
Il problema ora è come fare in modo di cercare v nei nodi direttamente collegati a quelli nella lista di adiacenza di u,
e cosi' via. In modo che appena trova v si ferma e possa poi stampare il cammino.
Qualcuno potrebbe aiutarmi, anke spiegandomi che tipo di ciclo debba utilizzare.
Grazie