tengo una galería de imagenes construida por nodos, y tengo que poder agregar una imagen, votarla y ordenarla por orden de llegada y por votos
Ya cuento con la galeria ordenada hasta que agrego una nueva imagen, y mi misión es votarla y ordenarla en el resto de la lista. Lo que me está complicando es el intercambio del nodo desordenado con el nuevo lugar. Ya que no puedo usar swap simplemente. Debería arreglar los punteros de los nodos manualmente. No se si se entiende, les paso mi estructura del Nodo y las funciones. El error que me sale es "segmentation fault" y no me deja verificar si lo que hice esta bien, agradecería su ayuda.
Código
struct Nodo { Imagen elemento; Nodo* sigLlegada; Nodo* sigVotos; int votos; }; class Lista { public: Nodo* prmLlegada; Nodo* prmVotos; }; 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.prmLlegada = 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; } } 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; }