Buscar Palabra en una lista

Iniciado por Dato Vagabundo, 14 Enero 2017, 21:27 PM

0 Miembros y 1 Visitante están viendo este tema.

Dato Vagabundo

Hola buenas, estoy haciendo una función que busca autores en una lista. Tengo la función que adjunto abajo, y no ese como comparar cada elemento de la lista con autor. Si alguien puede echarme una mano se lo agradeceria. Muchas gracias.



int BuscarAutor(LISTA *l, char *autor)
{
   NODO *aux=lista->primero;

   int i=0;
 
   int cuenta=0;
 
   if(aux==NULL)
   {
                                   
       return NULL;
   }
   else
   {
       
     
       do {
         
           if(strcmp(aux,autor)==0)
           {
               cuenta++;
                                                                                               
           }
         
         
           aux=aux->siguiente;
           
           
       }while(aux!=NULL);

       printf("Numero: %i\n",cuenta);
       return NULL;
       
   }
   
}


ivancea96

En el strcmp, tendrás que poner aux->autor, o aux-> el dato que sea, no sé como se llama el campo de la estructura.

Dato Vagabundo

Si pongo aux->autor me entra solo una vez, aunque haya varios.

MAFUS

Podrías mostrar como es LISTA y NODO. Los puedo intuir pero para estar seguro mejor verlo.

En la función no usas la LISTA que le has pasado pues esta la has llamado l y tú te refieres a ella como lista.

Devuelves NULL a un tipo de dato int. Debes devolver 0 o un valor negativo si la función hs fallado (una convención bastante extendida), pero no NULL.

ivancea96

Lo de aux->autor solo en strcmp, que es donde lo necesitas.

francosmp

en tu comparacion no estas usando el campo del dato a comparar, sino  estas usando el aux y el aux es un nodo (TDA) mas no una variable.  te recomiendo que uses compareto.
Salu2