elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / Nodos y punteros, ayuda C++ en: 7 Diciembre 2014, 22:51 pm
Buenas! Soy estudiante de computación y estoy trabada con algo a ver si me pueden ayudar! Estoy usando el codeblocks en linux
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
  1. struct Nodo {
  2. Imagen elemento;
  3. Nodo* sigLlegada;
  4. Nodo* sigVotos;
  5. int votos;
  6. };
  7.  
  8. class Lista {
  9. public:
  10. Nodo* prmLlegada;
  11. Nodo* prmVotos;
  12. };
  13. void GaleriaImagenes::agregarImagen(const Imagen &imagen) {
  14.  
  15. Nodo* nuevo = new Nodo;
  16. nuevo -> elemento = imagen;
  17. nuevo -> sigLlegada = NULL;
  18. nuevo -> sigVotos = NULL;
  19. nuevo -> votos = 0;
  20.  
  21. if(imagenes.prmLlegada == NULL){
  22. imagenes.prmLlegada = nuevo;
  23. }
  24. else{
  25. Nodo* i = imagenes.prmLlegada;
  26. Nodo* j = imagenes.prmVotos;
  27.  
  28. while( i -> sigLlegada != NULL){
  29. i = i -> sigLlegada;
  30. }
  31. i -> sigLlegada = nuevo;
  32. while( j -> sigVotos != NULL){
  33. j = j -> sigVotos;
  34. }
  35. j -> sigVotos = nuevo;
  36. }
  37. }
  38.  
  39. void GaleriaImagenes::votar(const Imagen &imagen) {
  40. Nodo* i = imagenes.prmVotos;
  41. while (!(i -> elemento == imagen)){
  42. i = i -> sigVotos;
  43. }
  44. i -> votos = i -> votos + 1;
  45. Nodo* k = i -> sigVotos;
  46. while(k -> votos == i -> votos - 1){
  47. k = k -> sigVotos;
  48. }
  49.   Nodo* j = k;
  50.    k = i-> sigVotos;
  51.    i= j -> sigVotos;
  52.  
  53. }
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines