这周除了上课时的课堂内容,其余几乎都在排练,毕竟快比赛了,每晚都要与同学们一起练,累也充实。
这周对数据结构课程比较印象深刻,也加以练习
如下 图的零接矩阵
#include<stdio.h>
#include<limits.h>
#include<stdlib.h>
#define INFINITY INT_MAX
#define MAX_VEX_NUM 10
typedef enum{DG, AG, WDG, WAG}Graph;
typedef int ValType;
typedef struct {
ValType ArcVal;
//InfoType ArcInfo;
} AdjType;
typedef char VexType;
typedef struct{
Graph kind;
int vexnum, arcnum;
VexType vexs[MAX_VEX_NUM];
AdjType adj[MAX_VEX_NUM][MAX_VEX_NUM];
}AdjGraph;
int LocateVex(AdjGraph *G, VexType v)
{
int i;
for(i=0; i<G->vexnum; i++)
{
if(G->vexs[i]==v)
return i;
}
return -1;
}
void CreateDG(AdjGraph *G)/*G->kind=DG*/
{
int i, j, k;
VexType v1, v2;
printf("请输入图的顶点数目:");
scanf("%d", &G->vexnum );
printf("请输入弧的数目:");
scanf("%d", &G->arcnum );
printf("请输入顶点信息:");
for(i=0; i<G->vexnum; i++)
{ fflush(stdin);
scanf("%c", &G->vexs[i]);
}
/*初始化邻接矩阵*/
for(i=0; i<G->vexnum; i++)
for(j=0; j<G->vexnum; j++)
G->adj[i][j].ArcVal=INFINITY;
printf("构建邻接矩阵,请输入一条弧的起点和终点,例如\"a,b\"\n");
for(k=0; k<G->arcnum; k++)
{
printf("第%d-%d条:", G->arcnum, k+1);
fflush(stdin);
scanf("%c,%c", &v1, &v2);
i=LocateVex(G, v1);
j=LocateVex(G, v2);
G->adj[i][j].ArcVal=1;
}
}
void main()
{
AdjGraph G;
G.kind=DG;
CreateDG(&G);
int i, j;
printf("输出图的邻接矩阵:\n");
for(i=0; i<G.vexnum; i++)
{ for(j=0; j<G.vexnum; j++)
printf("%14d", G.adj[i][j].ArcVal);
printf("\n");
}
}