建一个简单的图
使用读取文件的方式建一个简单图的,不知道拿错了,求高手帮忙!下面是写的程序:
#include<stdio.h>
#include<stdlib.h>
#define MNUM 20
typedef int infotype;
typedef char vertextype;
typedef struct arcnode{
int adjvex;
struct arcnode *nextarc;
infotype *info;
}arcnode;
typedef struct vnode{
vertextype data;
arcnode *firstarc;
}vnode,adjlist[MNUM];
typedef struct{
adjlist M;
int vexnum,arcnum;
int kind;
}algraph;
int locatevex(algraph G,vertextype v){
int i,n;
for(i=0;i<G.vexnum;i++){
if((n=G.M[i].data)==v) return n;
}
return 0;
}//定位函数
void main(algraph &Q){
int i,j,k;
char vi,vj;
arcnode *p;
FILE *fp;
fp=fopen("2.txt","r");
printf("11");//这些是用检错的,好像就从这坏了
fscanf(fp,"%d",&Q.vexnum);
fscanf(fp,"%d",&Q.arcnum);
printf("22");
for(i=0;i<Q.vexnum;i++){
fscanf(fp,"%c",&Q.M[i].data);
Q.M[i].firstarc=NULL;
}
printf("33");
for(k=0;k<Q.arcnum;k++){
fscanf(fp,"%c",&vi);
fscanf(fp,"%c",&vj);
i=locatevex(Q,vi);j=locatevex(Q,vj);
p=(arcnode *)malloc(sizeof(arcnode));
p->adjvex=j;p->nextarc=Q.M[i].firstarc;
Q.M[i].firstarc=p;
}
printf("44");
for(k=0;k<Q.arcnum;k++){
fscanf(fp,"%d",p->info);
}
printf("55");
fclose(fp);
}
其中内容文件是 69abcdeffeeddcbcacfadfcfcaad1554536987 觉得这样输得话提前得算好,
有没有更好的输入方式?对了,我的最终目的是实现最短路径