无向邻接矩阵用迪杰斯特拉算法输出的问题
各位大虾帮忙看看我这个程序错在那里啊?小弟急啊……#include<stdio.h>
#define max 20
#define MAXCOST 4
typedef strcuct
{
char vexs[max];
int arcs[max][max];
int vexnum,arcnum;
}mgraph;
void spath(mgraph g,int v)
{
struct
{
int length;
int pre;
}dist[max];
int final[max];
int i,j,k,min;
struct
{
int data[max];
int top;
}s;
for(i=0;i<g.vexnum;i++)
{
final[i]=0;
dist[i].length=g.arcs[v][i];
if(dist[i].length<MOXCOST)
dist[i].pre=v;
else
dist[i].pre=-1;
}
dist[v].pre=-1;
final[v]=1;
for(i=0;i<g.vexnum;i++)
{
min=MAXCOST;
for(j=0;j<g.vexnum;j++)
if((!final[j]&&)&&(dist[j].length<min))
{
min=dist[j].length;
k=j;
}
if(min<MAXCOST)
{
final[k]=1;
for(j=0;j<g.vexnum;j++)
if(!final[j]&&(min+g.arcs[k][j]<dist[j].length))
{
dist[j].length=min+g.arcs[k][j];
dist[j].pre=k;
}
else break;
}
}
for(i=0;i<g.vexnum;i++)
{
printf("%c->%c: %d \n",g.vexs[v],g.vexs[i],dist[i].length);
s.top=-1;s.data[++s.top]=i;
j=dist[i].pre;
while(j!=-1)
{
s.data[++s.top]=j;
j=dist[j].pre;
}
while(s.top!=-1)
printf("%c",g.vexs[s.data[s.top--]]);
printf("\n");
}
}
void main()
{
mgraph g;
int v=4;
g.arcs[0][1]=3,g.arcs[0][2]=8,g.arcs[0][3]=5,
g.arcs[1][0]=3,g.arcs[1][2]=4,g.arcs[1][3]=6,
g.arcs[2][0]=8,g.arcs[2][1]=4,g.arcs[2][3]=2,
g.arcs[3][0]=5,g.arcs[3][1]=6,g.arcs[3][2]=2;
spath(g, v);
}