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!!!
Cualquier ayuda sera bienvenida : )
Mod: Modificado con etiquetas GeSHi para hacer el código más legible
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 (cpp) [Seleccionar]
#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