Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: :Luigi en 9 Mayo 2015, 17:17 pm



Título: Progrma en C++. No encuentro el error
Publicado por: :Luigi en 9 Mayo 2015, 17:17 pm
Buenas a todos, estoy haciendo un ejercicio en C++ en el cual tengo un error que no comprendo de donde proviene y me gustaria que me echaseis una mano si no os parece mal.

El caso es que tengo que crear una lista con estructura dinamica con 2 funciones (realmente mas pero tengo el fallo ahi). 1 funcion es para añadir un nodo al principio de la lista y otro para añadirlo al final. El del principio me va bien pero el del final me aparece un error y no consigo averiguar donde falla. Gracias por la ayuda!!!

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. void insertar_al_principio(struct s_nodo *&p);
  6. void insertar_al_final(struct s_nodo *&p);
  7.  
  8. struct s_nodo
  9. {
  10. int numero;
  11. struct s_nodo *siguiente;
  12. };
  13.  
  14. int main(void)
  15. {
  16. struct s_nodo *principio; //marca el principio de la lista
  17.  
  18. cout << "-----  INSERTAR AL PRINCIPIO  -----" << endl << endl;
  19. insertar_al_principio(principio);
  20. cout << "-----  INSERTAR AL FINAL -----" << endl << endl;
  21. insertar_al_final(principio);
  22.  
  23. return 0;
  24. }
  25.  
  26. void insertar_al_principio(struct s_nodo *&p)
  27. {
  28. struct s_nodo *nuevo; //para añadir el nuevo nodo
  29.  
  30. nuevo = new struct s_nodo;
  31.  
  32. cout << "Escribe el numero para insertarlo al principio de la lista:    ";
  33. cin >> nuevo->numero;
  34.  
  35. if (p == NULL)
  36. {
  37. p = nuevo;
  38. nuevo->siguiente = NULL;
  39. cout << endl << "El nuevo nodo es el primero de la lista" << endl << endl;
  40. }
  41. else
  42. {
  43. nuevo->siguiente = p;
  44. p = nuevo;
  45. cout << endl << "Añadido nuevo nodo al principio de la lista vacia" << endl << endl;
  46. }
  47.  
  48. }
  49.  
  50.  
  51.  
  52. void insertar_al_final(struct s_nodo *&p)
  53. {
  54. struct s_nodo *nuevo; //para añadir el nuevo nodo
  55. struct s_nodo *aux;    // sirve para recorrer la lista en busca de el ultimo nodo
  56.  
  57. nuevo = new struct s_nodo;
  58.  
  59. cout << "Escribe un numero para insertarlo al final de la lista:    ";
  60. cin >> nuevo->numero;
  61. nuevo->siguiente = NULL;
  62.  
  63. if (p == NULL)
  64. {
  65. p = nuevo;
  66. cout << endl << "Lista vacia. Nodo añadidoal principio" << endl << endl;
  67. }
  68. else
  69. {
  70. aux = p;
  71. while (aux->siguiente != NULL)
  72. {
  73. aux = aux->siguiente;
  74. }
  75.  
  76. aux->siguiente = nuevo;
  77. cout << endl << "Añadido al final de la lista" << endl << endl;
  78. }
  79.  
  80. }


Cualquier ayuda sera bienvenida : )

Mod: Modificado con etiquetas GeSHi para hacer el código más legible


Título: Re: Progrma en C++. No encuentro el error
Publicado por: :Luigi en 9 Mayo 2015, 18:32 pm
Hola de nuevo, no he querido editar el anterior mensaje para que se notase que habia una respuesta.
He resuelto el misterio, ha sido un error muy bobo ^^u.

La variable   struct s_nodo *principio;   no estaba iniciada. Solo he tenido que añadirle un NULL para dejarla asi     
Código:
struct s_nodo *principio = NULL;

Ahora ya funciona bien. Muchas gracias igualmente a todos los que habeis leido el mensaje para intentar ayudarme :D