sábado, 19 de enero de 2008

Insertar al Final de una Lista simplemente Enlazada Desarrolle la función "extraeValor" iterativa a la que pasándole la dirección de un Recursivamente

Desarrolle un subprograma (procedimiento o función) recursivo llamado "insertaFinalRecursivo" que inserte por al final de la lista un entero. Para crear un nodo en memoria dinámica emplee la función malloc. Si se implementa como procedimiento se debe pasar la dirección de un puntero al inicio de una lista enlazada y un entero (la lista puede estar vacía). Si se implementa como función se debe pasar un puntero al inicio de una lista enlazada y un entero (la lista puede estar vacía) y debe devolver un puntero al inicio de la lista modificada.

void insertaFinalRecursivo (PNodoLista *p, int v){
PNodoLista nuevo = *p;
//Condicion Base Final de Lista
if (nuevo== NULL){
//si aux es null creamos el nuevo nodo
nuevo = (PNodoLista)malloc(sizeof(TNodoLista));
//en el campo dato guardamos el valor
nuevo->dato= v;
//su campo siguiente apuntara a null
nuevo-> sig=NULL;
*p=nuevo;
}
//llamada recursiva, si ya existe la lista, le pasamos
//la direccion de nuevo->sig(asi vamos recortando la lista) y el valor,
else insertaFinalRecursivo(&(nuevo->sig),v);
}