Ayuda Con Este ERROR, GRAFOS

Iniciado por verakra, 25 Febrero 2020, 03:04 AM

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

verakra

BUENO EXPLICO MI CASO, ESTOY INTENTANDO HACER UNA FUNCION QUE ME INSERTE UNA ARISTA  PARA HACER UN BFS ,ESTA MI FUNCION Y CUANDO LO LLAMO EN EL MAIN CON DO WHILE, LO QUE SUCEDE ES QUE CUANDO QUIERO INSERTAR UNA ARISTA DE UN VERTICE A OTRO , ME SALE QUE EL PROGRAMA DEJO FUNCIONAR, ENTONCES NOSE SE TENGO ALGUN ERROR AL CODIFICAR O UN ERROR LOGICO, POR FAVOR UN ILUMINADO QUE ME AYUDE A RESOLVER ESTE DILEMA

Código (cpp) [Seleccionar]
void Grafo::InsertarArista(Vertice *origen, Vertice *destino)
{
Arista *nueva = new Arista;
nueva->sig=NULL;
nueva ->ady=NULL;

Arista *aux;
aux = origen->ady;

if(aux==NULL)
{
origen->ady = nueva;
nueva->ady = destino;
}
else
{
while (aux !=NULL)
{
aux=aux->sig;

  }
 
  aux->sig = nueva;
  nueva->ady=destino;
  }
}




Código (cpp) [Seleccionar]
case 2:
        {
            string origen, destino;
            system("cls");
            if(G.vacio())
            {
                cout<<"El grafo esta vacio"<<endl;
            }
            else
            {
                cout<<"Ingrese del nombre del vertice origen: ";
                cin.ignore();
                getline(cin, origen, '\n');
                cout<<"Ingrese el nombre del vertice destino: ";
                getline(cin, destino, '\n');
                system("cls");
             
                if(G.GetVertice(origen) == NULL || G.GetVertice(destino) == NULL)
                {
                    cout<<"Uno de los vertices no es valido"<<endl;
                }
                else
                {
                    G.InsertarArista(G.GetVertice(origen), G.GetVertice(destino));//, peso);
                }
            }
            cin.get();
            cin.get();
            break;
        }

K-YreX

Antes de nada decir que hay un foro propio para Programación C/C++ y que no es necesario que escribas el mensaje en mayúsculas...

Dicho esto y sin conocer en profundidad tu implementación diría que el error puede estar en la línea 23 de la función InsertarArista() ya que en el <while()> continúas avanzando hasta que <aux> es NULL y cuando es NULL, intentas asignar a <sig>, <nueva>. Creo que el bucle debería ser <while(aux->sig != NULL)>
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;