¿Qué pasa? La operación es confusa.

Dos errores

Uno no está inicializado.

Otra definición de infinito es demasiado pequeña.

¿#Definición? ¿ilimitado? 100000//Esto es demasiado pequeño. ¿Menos de la distancia máxima (2500)? Esto no es científico.

¿#Definición? Máx. 40

# incluir ltstdio.h gt

# incluir ltstdlib.h gt

# incluir ltconio.h gt

# incluir ltstring .h gt

#Definición? ¿Maxvertexnum? 40//Puntos máximos

typedef? estructura? Axel. //Información de peso

{

int? adj? //Peso

}arcell, adj Matrix[Maxvertexnum][Maxvertexnum]; //Matriz de adyacencia del gráfico

typedef? estructura? vexsinfo

{

int? Ubicación;

¿Comarca? nombre[32];

} vexsinfo

typedef? estructura? pmgraph

{

vexsinfo? vexs[Maxvertexnum];

adjmatrix? arco;

int? vixnum, arcsnum

} pmgraph

int? Llegó[40];

int? d[40];

pmgrafo? pgtrain

pmgraph? initgraph()

{

int? i=0,j=0;

pmgrafo? p;

p . vexsnum = 12;

p núm de arcos = 21

for(I = 0; iltvexsnum; i )

Pectorales[i]. posición = I;

Strcpy(p.vexs[0]). Nombre, "Urumqi");

Strcpy(p.vexs[1]). Nombre, "Lanzhou");

Strcpy(p.vexs[2]. Nombre, "Xi'an");

Strcpy(p.vexs[3]). Nombre, "Kunming");

Strcpy(p.vexs[4]). Nombre, "Guangzhou");

Strcpy(p.vexs[5]). Nombre, "Haikou");

Strcpy(p.vexs[6]). Nombre, "Shanghái");

Strcpy(p.vexs[7]). Nombre, "Zhengzhou");

Strcpy(p.vexs[8]). Nombre, "Pekín");

Strcpy(p.vexs[9]). Nombre, "Shenyang");

Strcpy(p.vexs[10]). nombre, "Harbin");

Strcpy (p. vexs [11]). Nombre, "Wuhan");

for (I = 0; i lt vixnum; i )

for (j = 0; j lt vixnum ; j )

p.arcs[i][j].adj = infinito;

p.arcs[0][1]. adj = 1600;p.arcs[0][3].

adj = 2500

p.arcs[1][2]. adj = 500p.arcs[2][4]. adj = 1300;

p.arcs[2][6]. adj = 1200;p.arcs[2][11]. adj = 625

p.arcs[2][7]. adj = 430p.arcs[2][8]. adj = 900

p.arcs[2][9]. adj = 1500;p.arcos[3][5]. adj = 920

p.arcs[3][4]. adj = 1087;p.arcs[4][5]. adj = 250

p.arcs[5][6]. adj = 1500;p.arcs[6][7]. adj = 1060;

p.arcs[6][8]. adj = 602p.arcs[6][11]. adj = 1000;

p.arcs[7][8]. adj = 1050;p.arcs[8][9]. adj = 640

p.arcs[8][10]. adj = 1023;p.arcs[8][11]. adj = 1060;

p.arcs[9][10]. adj = 200

for(I = 0; i lt vixnum; i )

for(j = 0; j lt vixnum; j )

p. arcos[j][i].adj=p.arcs[i][j]. adj

¿Volver? p;

}

int? localizarvex(pmgraph?p,int?cinco)

{

int? i;

for(I = 0; iltvexnum; i)

if(v==p.vexs[i].position)

¿Regresar? Yo;

¿Volver? -1;

}

¿No válido? ruta(pmgraph?p,int?m,int?n,int?k)

{

int? s, x=0, t = k 1;

if(d[k]==n? amp amp?k lt8)

{

para (s = 0; s ltk; s )

printf("s ->, p.vexs[d[s]]. nombre);

printf("s\n \n ",p.vexs[d[s]].Nombre);

}

Otros

{

s = 0;

mientras(s lt; vixnum)

{

if((p.arcs[d[k]][s] ).

adj lt infinito) amp amp(reach[s]==0))

{

reach[s]= 1;

d[k 1] = s;

ruta(p, m, n, t);

alcance[s] = 0;

}

s ;

}

}

}

int? toda oda(pm gráfico?p)

{

int? k, I, j, m, n;

Printf("Ingrese los números de su punto inicial y final: \ n \ n "); ", ampiampj);

m=locatevex(p,I);

n=locatevex(p,j);

d[0]= m ;

for(k = 0; k lt vixnum; k)

alcance[k]= 0;

alcance[m]= 1;

ruta(p, m, n, 0);

¿Regresión? 1;

}

¿No válido? main()

{

Sistema("¿Color? 1f");

Sistema("¿Modo? Contras: cols=140? líneas=130") ;

pgtren? =?init gráfico(); //No inicializado.

todos viajaron(pg tren);

}