学习代码6

include <stdio.h>

include <stdlib.h>

include <limits.h>

define limit INT_MAX //DG为0,UDG为INT_MAX

define MAX 20

typedef enum{DN,DG,UDN,UDG}graphkind; //图类型声明
typedef int adjtype; //权值类型
typedef char vertexdata; //顶点向量
typedef struct{ //顶点结构定义
adjtype adj;
}arcnode;

typedef struct{ //矩阵结构体定义
graphkind kind;
int vexnum,arcnum; //顶点,边
vertexdata vertex[MAX];
arcnode arcs[MAX][MAX];// 连接相邻矩阵
}adjmatrix;

//函数声明
void createDN(adjmatrix *G);
int LocateVX(adjmatrix *G,vertexdata v);

int main(int argc, char *argv[]) {
adjmatrix G;
createDN(&G);
return 0;
}

int LocateVX(adjmatrix *G,vertexdata v) {
int i=-1,j;
for(j=0;jvexnum;j++){
if(G->vertex[j]==v){
i=j;
break;
}
return i;
}
}

void createDN(adjmatrix *G){
int i,j,r;
adjtype weight;
vertexdata v1,v2;
printf("请输入顶点个数;");
scanf("%d",&G->vexnum);
printf("请输入边个数;");
scanf("%d",&G->arcnum);

for(i=0;i<G->vexnum;i++)     //矩阵初始化 
	for(j=0;j<G->vexnum;j++)
		G->arcs[i][j].adj=limit;   


printf("请输入顶点信息,连续输入无空格;"); 
fflush(stdin);
for(i=0;i<G->vexnum;i++)
	scanf("%c",&G->vertex[i]); 

	
printf("请输入起点,终点,权值;"); 
for(r=0;r<G->arcnum;r++) {
	printf("第%d-%d条",&G->arcnum,r+1); 
	fflush(stdin);
	scanf("%c,%c,%d",&v1,&v2,&weight); 
	i=LocateVX(G,v1);
	j=LocateVX(G,v2);

// if(j==-1) printf("输入错误\n");
G->arcs[i][j].adj=weight;
}
}

posted on 2020-06-16 11:31  joniky  阅读(112)  评论(0)    收藏  举报

导航