¿Qué pasa? La operación es confusa.
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; p>
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);
}