Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: :Luigi en 2 Enero 2015, 17:10 pm



Título: error en mi programa con lista dinamica
Publicado por: :Luigi en 2 Enero 2015, 17:10 pm
Buenas a todos, estoy aprendiendo C/C++. Bueno he llegado un tramo en C++ que me enseña a crear listas dinamicas, pilas y colas. El caso es que he hecho un ejercicio que aparentemente debe estar bien, lo he repasado muchas veces y sigo sin comprender que es lo que falla. Decir tambien que aunque se que pueden haber maneras mejores de hacerlo el ejercicio me pide que utilice exclusivamente lo aqui expuesto. El ejercicio pide que tengo que crear una lista con una funcion en la que se vayan añadiendo mas nodos al final de la lista. El programa realmente es mucho mas extenso ya que hay una funcion que inserta un nodo al principio y no me da ningun problem  pero el depurador saca un error de segmentation fault cuando llega al punto de la funcion "insertar al final", mas concretamente en la linea <while (aux->siguiente != NULL)> que hay en la funcion.

Código:
#include <iostream>
#include <cstdlib>

using namespace std;

struct t_nodo
{
  int dato;
  struct t_nodo *siguiente;
};

void insertar_al_final (struct t_nodo *&p);

int main(void)
{
  struct t_nodo *principio;
  cout << "\n---- INSERTAR AL FINAL ----";
  cin.get();cin.get();
  insertar_al_final(principio);

  return 0;
}

//FUNCION INSERTAR AL FINAL
void insertar_al_final(struct t_nodo *&p)
{
  struct t_nodo *nuevo_nodo;
  struct t_nodo *aux;

  nuevo_nodo = new struct t_nodo;

  cout << "Introduzca el numero:     ";
  cin >> nuevo_nodo->dato;
  nuevo_nodo->siguiente = NULL;

  if (p != NULL)
  {
    aux = p;

    while (aux->siguiente != NULL)    //aqui es donde marca el problema
    {
      aux = aux->siguiente;
    }
    aux->siguiente = nuevo_nodo;
  }
  else
  {
    p = nuevo_nodo;
  }
}



El resultado del depurador esta en esta imagen:
http://postimg.org/image/xlcxnptrn/ (http://postimg.org/image/xlcxnptrn/)

Toda ayuda es bienvenida. Muchas gracias ^^


Título: Re: error en mi programa con lista dinamica
Publicado por: :Luigi en 2 Enero 2015, 20:58 pm
Fiin del misterio.

El problema era que en main la estructura "struct t_nodo *principio;" no estaba iniciada. Solo he tenido que cambiarr esa linea por "struct t_nodo *principio = NULL;" y caso resuelto.

Gracias a todos los que habeis intentado ayudarme y a los que habeis ayudado tambien :D