第十二周

这周除了上课时的课堂内容,其余几乎都在排练,毕竟快比赛了,每晚都要与同学们一起练,累也充实。

这周对数据结构课程比较印象深刻,也加以练习

如下  图的零接矩阵

#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" ");
    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("输出图的邻接矩阵: ");
    for(i=0; i<G.vexnum; i++)
    {    for(j=0; j<G.vexnum; j++)
            printf("%14d", G.adj[i][j].ArcVal);
        printf(" ");
    }
}

原文地址:https://www.cnblogs.com/lsx1989/p/5499240.html