Hola,
Tengo un par de consultas, que son más bien generales, pero que me surgieron mientras resolvía el ejercicio 1 del parcial de Mayo de 2017. Tengo una duda por cada parte del ejercicio.
1)a)
¿Necesito la variable iterador? Pregunto, porque como L es pasado por valor (no por referencia), es una copia del puntero. O sea, si en algún lugar recorro la lista haciendo L=L->sig, no "pierdo" la lista original. ¿Estoy en lo cierto?
Por si acaso, lo que había hecho es:
Lista mayor (Lista L){
Lista res=L;
while (L->sig!=NULL){
if (L->sig->dato>res->dato)
res = L->sig;
L=L->sig;
}
return res;
}
1)b)
¿Es correcto usar el condicional de == o != entre punteros? Porque para evitar unas operaciones, en mi solución, comparo si dos punteros son distintos. Lo copio para explicarme mejor:
void ordenar (Lista &L){
Lista aux=L; // a diferencia de la parte 1)a), aqui si copio la lista porque fue pasada por referencia
while (aux->sig!=NULL){
max = mayor(aux);
if (max!=aux){ // AQUI ESTA MI DUDA!
int val = aux->dato;
aux->dato=max->dato;
max->dato=val;
}
aux=aux->sig;
}
}
Disculpen la molestia y quedo atento a cualquier ayuda que me puedan brindar.
Saludos!