Estructura avanzada de datos

Solo disponible en BuenasTareas
  • Páginas : 2 (368 palabras )
  • Descarga(s) : 0
  • Publicado : 6 de junio de 2011
Leer documento completo
Vista previa del texto
float* caminoMasCorto(pgrafo g, char c)
{
int i, j, r;
int *visitados;
float *distancias = NULL;
i = indiceVertice(g,c);
if (i != -1) {
visitados = (int*)calloc(g->numeroVertices,sizeof(int));
distancias = (float*) calloc(g->numeroVertices, sizeof(float));
memset(visitados, 0, g->numeroVertices);
for(j= 0; jnumeroVertices; j++)//if (g->arcos[i][j] != 0)
distancias[j] = g->arcos[i][j];
/*else
distancias[j] = VALOR_GRANDE; */
distancias[i] = 0;visitados[i] = 1;
while (!todosVisitados(visitados, g->numeroVertices))
{
j = menorNoVisitado(distancias, visitados, g->numeroVertices);
visitados[j]= 1;for(r=0; rnumeroVertices; r++)
if(g->arcos[j][r] != VALOR_GRANDE) // por cada sucesor del vertice j
if (distancias[r] > distancias[j] + g->arcos[j][r]){
distancias[r] = distancias[j] + g->arcos[j][r];
}
}
printf("\n");
/*for(i = 0; inumeroVertices; i++)
printf ("\t%.f",distancias[i]);
free(distancias); */
free(visitados);
}
return distancias;
}

int todosVisitados(int *v, int n)
{
int result = 1;
int i;
for(i=0;iarcos[i][j]==1){(*g)->arcos[i][j] = 0;
printf("El arco se ha eliminado exitosamente\n");
printf("Grafo despues de haber borrado el arco AB\n");

}else{
printf("error: no existe arco entre estos vertices, no se puede eliminar\n");
}
}

else{
printf("Alguno de estos vertices no existen, no se puedeeliminar arco\n");
}
}
}

void borrarVertice(pgrafo *g, char v){
int i,j,d,h;
if(!grafoVacio(*g)){
for(i=0; inumeroVertices; i++){
if ((*g)->vertices[i] == v)...
tracking img