Progrma en C++. No encuentro el error

Iniciado por :Luigi, 9 Mayo 2015, 17:17 PM

0 Miembros y 1 Visitante están viendo este tema.

:Luigi

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

:Luigi

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