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!!!
#include <iostream>
using namespace std;
void insertar_al_principio(struct s_nodo *&p);
void insertar_al_final(struct s_nodo *&p);
struct s_nodo
{
int numero;
struct s_nodo *siguiente;
};
int main(void)
{
struct s_nodo *principio; //marca el principio de la lista
cout << "----- INSERTAR AL PRINCIPIO -----" << endl << endl;
insertar_al_principio(principio);
cout << "----- INSERTAR AL FINAL -----" << endl << endl;
insertar_al_final(principio);
return 0;
}
void insertar_al_principio(struct s_nodo *&p)
{
struct s_nodo *nuevo; //para añadir el nuevo nodo
nuevo = new struct s_nodo;
cout << "Escribe el numero para insertarlo al principio de la lista: ";
cin >> nuevo->numero;
if (p == NULL)
{
p = nuevo;
nuevo->siguiente = NULL;
cout << endl << "El nuevo nodo es el primero de la lista" << endl << endl;
}
else
{
nuevo->siguiente = p;
p = nuevo;
cout << endl << "Añadido nuevo nodo al principio de la lista vacia" << endl << endl;
}
}
void insertar_al_final(struct s_nodo *&p)
{
struct s_nodo *nuevo; //para añadir el nuevo nodo
struct s_nodo *aux; // sirve para recorrer la lista en busca de el ultimo nodo
nuevo = new struct s_nodo;
cout << "Escribe un numero para insertarlo al final de la lista: ";
cin >> nuevo->numero;
nuevo->siguiente = NULL;
if (p == NULL)
{
p = nuevo;
cout << endl << "Lista vacia. Nodo añadidoal principio" << endl << endl;
}
else
{
aux = p;
while (aux->siguiente != NULL)
{
aux = aux->siguiente;
}
aux->siguiente = nuevo;
cout << endl << "Añadido al final de la lista" << endl << endl;
}
}
Cualquier ayuda sera bienvenida : )
Mod: Modificado con etiquetas GeSHi para hacer el código más legible
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
struct s_nodo *principio = NULL;
Ahora ya funciona bien. Muchas gracias igualmente a todos los que habeis leido el mensaje para intentar ayudarme :D