Ejercicio 2 -a) Take

Ejercicio 2 -a) Take

de Joaquin Caballero Aldorasi -
Número de respuestas: 3

Buenas, estuve intentando resolver este ejercicio y me gustaria saber si mi solucion efectivamente retorna una lista que no comparte memoria con los parametros y si los casos en los cuales i = 0 o que la lista "l" pasada por parámetro se encuentre vacía son  resueltos correctamente.

Adjunto código:

 :

En respuesta a Joaquin Caballero Aldorasi

Re: Ejercicio 2 -a) Take

de Mauricio Sosa Giri -
Hola Joaquin.

Te paso una funcion para generar una lista y un procedimiento para imprimirla para que vos mismo puedas testear tus códigos.

lista generarLista(int n) {
lista p;
p = NULL;
while (n > 0){
lista q = new nodo;
q->elem = n+n; //podria ser simplemente q->elem = n entonces quedaria 1,2,3,4,5,...,n;
q->sig = p;
p = q;
n = n - 1;
}
return p;
}

void printLista(lista l) {
printf("%d ",l->elem);
printf("\n");
if (l->sig != NULL)
printLista(l->sig);
}

Luego te creas un main mas o menos asi

int main() {
lista L = generarLista(5);
printLista(L);
L = llamadaATuFuncion(param1, param2);
printLista(L);
return 0;
}

Algo así, luego lo compilás y ejecutás y ya podés probar tus funciones y procedimientos.

Espero que te sirva.

¡Saludos cordiales!
En respuesta a Joaquin Caballero Aldorasi

Re: Ejercicio 2 -a) Take

de Mauricio Costanzo Silveira -
Hola ¿cómo estás?

Creo que está perfecto. En definitiva, estás retornando el primer elemento de la nueva lista. Y ese elemento (y ningún elemento de la nueva lista) No comparte memoria con ningún elemento de L.

Saludos,
Mauricio.
En respuesta a Joaquin Caballero Aldorasi

Re: Ejercicio 2 -a) Take

de Federico Andrade -
Hola Joaquin,
El código parece correcto. Ojo que (contador = i) es una asignación y eso da siempre verdadero, por lo cual supongo que no te está funcionando. Tenés que poner (contador == i).
La parte de generar nueva memoria la estás haciendo bien. Propongo que sigas el consejo de Mauricio de probar el código. En este caso podés crear una lista, ejecutar take, borrar la lista original e imprimir la lista generada por take. Si no explota significa que la memoria de la lista nueva no estaba siendo compartida con la lista original.
Saludos