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
#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