Hola eferion muchas gracias por tu respuesta! Sí, lo que vos decis tiene sentido. Al ser el Nodo primero, si es null imagenes.prmLlegada y imagenes.prmVotos también son null.
Con tu comentario, arreglé la función agregarImagen y lo solucioné así:
Me sigue tirando segmentation Fault, pero al menos no en esa función. Muchas gracias,
Ahora me dice en la función Votar:
Lo que hace el primer while es buscar la imagen, y cuando la encuentro sumarle un voto. Y después quiero intercambiar ese voto desordenado con el último voto de la lista que tenia el valor del voto antes de ser votado. Ya que no puedo usar swap por el tema de arreglar los punteros, lo hice manual. Pero me sigue dando segmentation fault. Alguna idea?
Muchas gracias!
Con tu comentario, arreglé la función agregarImagen y lo solucioné así:
Código (c++) [Seleccionar]
void GaleriaImagenes::agregarImagen(const Imagen &imagen) {
Nodo* nuevo = new Nodo;
nuevo -> elemento = imagen;
nuevo -> sigLlegada = NULL;
nuevo -> sigVotos = NULL;
nuevo -> votos = 0;
if(imagenes.prmLlegada == NULL || imagenes.prmVotos == NULL){
imagenes.prmLlegada = nuevo;
imagenes.prmVotos== nuevo;
}
else{
Nodo* i = imagenes.prmLlegada;
Nodo* j = imagenes.prmVotos;
while( i -> sigLlegada != NULL){
i = i -> sigLlegada;
}
i -> sigLlegada = nuevo;
while( j -> sigVotos != NULL){
j = j -> sigVotos;
}
j -> sigVotos = nuevo;
}
}
Me sigue tirando segmentation Fault, pero al menos no en esa función. Muchas gracias,
Ahora me dice en la función Votar:
Código (c++) [Seleccionar]
void GaleriaImagenes::votar(const Imagen &imagen) {
Nodo* i = imagenes.prmVotos;
while (!(i -> elemento == imagen)){
i = i -> sigVotos;
}
i-> votos = i -> votos + 1;
Nodo* k = i -> sigVotos;
while(k -> votos == i -> votos - 1){
k = k -> sigVotos;
}
Nodo* j = k;
k = i-> sigVotos;
i= j -> sigVotos;
}
Lo que hace el primer while es buscar la imagen, y cuando la encuentro sumarle un voto. Y después quiero intercambiar ese voto desordenado con el último voto de la lista que tenia el valor del voto antes de ser votado. Ya que no puedo usar swap por el tema de arreglar los punteros, lo hice manual. Pero me sigue dando segmentation fault. Alguna idea?
Muchas gracias!