第五周学习进度

#include<stdio.h>
#include<stdlib.h>
typedef char VertexData;
#define maxsize 20 
typedef struct
{
    VertexData vex[maxsize];//顶点表
    int arc[maxsize][maxsize];//邻接矩阵
    int n,e;//边数、顶点数
}AdjMatrix;

int locatevex(AdjMatrix g,VertexData v)    //在图中查找顶点,存在返回顶点数组下标,否则返回-1
{
    int i;
    for(i=0;i<g.n;i++)if(g.vex[i]==v)return i;
    return -1;
}

void print(AdjMatrix g)
{
    int i,j;
    printf("图的邻接矩阵表示:\n");
    for(i=0;i<g.n;i++)
    {
        for(j=0;j<g.n;j++)
        {    
              printf("%3d",g.arc[i][j]);
        }
        printf("\n");
    }
}

void CreateDN(AdjMatrix *g)    //创建有向图邻接矩阵
{
    int i,j,k,weight;
    VertexData v1,v2;
    printf("请输入顶点数和边数:\n");
    printf("顶点数n=");
    scanf("%d",&g->n);
    printf("边数  e=");
    scanf("%d",&g->e);
    printf("请输入图的顶点信息(连续输入无空格):\n");
    getchar();
    for(i=0;i<=g->n;i++)
    scanf("%c",&g->vex[i]);
    for(i=0;i<g->n;i++)
        for(j=0;j<g->n;j++)
            g->arc[i][j]=0; //初始化邻接矩阵
    printf("请输入图的边的信息(起点、终点与权值):\n");
    for(k=0;k<g->e;k++)
    {
        printf("请输入第%d条边的两端点和权值(连续输入无空格):",k+1);
        scanf("%c%c%d",&v1,&v2,&weight);
        fflush(stdin);        //清空缓冲区(输入)
        i=locatevex(*g,v1);
        j=locatevex(*g,v2);
        g->arc[i][j]=weight;//有向网有权矩阵对称
    }
}

int main()
{
    AdjMatrix g;
    CreateDN(&g);
    print(g);
    printf("\n");
    return 0;
}

 

日期 学习方法 学习时间 新增代码行 知识总结
星期一 看慕课视频 2h 0  
星期二        
星期三 看慕课视频 2.5h 0  
星期四 看慕课视频 2h 0  
星期五        
星期六 看慕课视频、做练习 4h 70  
星期日 做练习 2h 110  
总计 看慕课视频、做练习 12.5h 180  
posted @ 2020-05-26 22:37  VousAime  阅读(115)  评论(0)    收藏  举报