学习笔记

include <stdio.h>

include <stdlib.h>

include <limits.h>

typedef enum{DG}GraphKind;//图的种类
typedef int qzlx;//权值类型
typedef char data;
typedef struct{
qzlx adj;//对于无权图,用1或0表示是否相邻,对带权图,则为权值类型
}ArcNode;
/图(邻接矩阵)的定义/
typedef char data;
typedef struct{
GraphKind kind;//图的种类
int din,hu;//图的顶点数和弧数
data ddxl[20];//顶点向量
ArcNode ljjz[20][20];//邻接矩阵
}AdjMatrix;
int vex(AdjMatrix Q,data v)
{
int j=-1,k;
for(k=0;kdin;k++)
if(Q->ddxl[k]==v)
{
j=k;
break;
}
return j;
}
void akaDG(AdjMatrix Q)
{
int i,j,k;
qzlx qzhi;
data v1,v2;
printf("请输入图的顶点数:\n");
scanf("%d",&Q->din);
printf("请输入图的弧数:\n");
scanf("%d",&Q->hu);
//初始化邻接矩阵
for(i=0;idin;i++)
for(j=0;jdin;j++)
Q->ljjz[i][j].adj=0;
printf("请输入顶点信息:\n");
fflush(stdin); /
消除前面回车的影响
/
for(i=0;idin;i++)
scanf("%c",&Q->ddxl[i]);
printf("请输入一条弧的起点、终点、权值");
for(k=0;khu;k++)
{
printf("第%d-%d条:",Q->hu,k+1);
fflush(stdin);
scanf("%c,%c,%d",&v1,&v2,&qzhi);
i=vex(Q,v1);
j=vex(Q,v2);
Q->ljjz[i][j].adj=qzhi;
}
}
void main(AdjMatrix *Q)
{
akaDG(Q);
}

posted @ 2020-05-18 10:16  AKA街头的刘备  阅读(127)  评论(0)    收藏  举报