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
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;
}
}
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;
}
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)>