sábado, 19 de enero de 2008

Extrae Por Valor de Una Lista Simplemente Enlazada en lenguaje C Recursivamente

Desarrolle la función "extraeValor" recursiva a la que pasándole la dirección de un puntero al inicio de una lista enlazada y un entero, extraiga el primer elemento de la lista con ese valor. La función devuelve 1 si se ha realizado la extracción y 0 en caso contrario. Para eliminar un nodo de memoria dinámica emplee la función free.

int extraeValor (PNodoLista *p, int v){
PNodoLista nuevo=*p;
//no hay lista devolvemos 0
if(nuevo == NULL) return 0;
//miramos si el valor que buscamos es el primer nodo de la lista
if (nuevo->dato == v){
//si lo encontramos lo eliminamos y devolvemos 1
*p=nuevo->sig;
free(nuevo);
return 1;
}
else return extraeValor (&(nuevo->sig), v);
}