El programa me queda apuntando a algo no inicializado en el momento que hago l = l->sig, tengo entendido
que esa es la forma correcta de avanzar. Qué me estoy olvidando?
En respuesta a Bruno Capote Hernández
Re: Violación de segmento('core' generado)
de Libertad Tansini -
Hola Bruno,
Sólo pedís memoria para un nodo con la instrucción: lista l=new nodo;
por lo tanto a continuación de ese nodo no hay otro!!
Deberías pedir más memoria, por ejemplo con: l->sig= new nodo;
EL código podría ser así:
lista l=new nodo;
l->elem=10;
printf("\n%d", l->elem);
l->sig= new nodo;
l=l->sig;
l->elem=15;
printf("\n%d", l->elem);
saludos, libertad
En respuesta a Bruno Capote Hernández
Re: Violación de segmento('core' generado)
Buenas, la asignación l = l->sig; te deja l apuntando a algo no inicializado como decís ya que vos al hacer list l = new nodo; simplemente estas creando un solo nodo y no estas definiendo ningún otro, tampoco estas inicializando l->sig con NULL o algún otro valor valido, por lo tanto al hacer l->elem = 15; tira segmantation fault porque estas intentando acceder a un lugar no valido.
En el caso de querer agregar mas nodos por ejemplo, podrías hacerte una función que inserte nodos al final de la lista o algo por el estilo, así podes iterar en ella con los elementos que haya, ya que de momento solo pedís memoria para uno.
En el caso de querer agregar mas nodos por ejemplo, podrías hacerte una función que inserte nodos al final de la lista o algo por el estilo, así podes iterar en ella con los elementos que haya, ya que de momento solo pedís memoria para uno.
Espero este paint sea ilustrativo para que veas lo que pasa, lo de abajo es una forma de poder engancharle el nodo con elem 15 que queres (aunque estaria bueno que siempre el nodo final apunte a NULL y otras cosas mas, pero es a modo de ilustración para que puedas debuggear mejor).
En respuesta a Lucas Fernandez Corbo
Re: Violación de segmento('core' generado)
Muchísimas gracias a ambos!