| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 740 人关注过本帖
标题:图的邻接矩阵的建立问题
只看楼主 加入收藏
qq8801103
Rank: 5Rank: 5
来 自:苏州中科大软件学院
等 级:职业侠客
威 望:1
帖 子:422
专家分:340
注 册:2009-10-8
结帖率:73.96%
收藏
已结贴  问题点数:10 回复次数:4 
图的邻接矩阵的建立问题
关于图的邻接矩阵的算法用c语言代码写下来
搜索更多相关主题的帖子: 邻接矩阵 
2010-05-24 14:11
LegendofMine
该用户已被删除
收藏
得分:10 
提示: 作者被禁止或删除 内容自动屏蔽
2010-05-24 17:19
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define MAX_VERTEX_NUM 20

typedef int Arc_Type;
typedef char VerTex_Type[5];

typedef enum
{
    DG, DN, UDG, UDN
}Graph_Kind;

typedef struct ArcCell
{
    Arc_Type adj;
    //Info_Type *info;
}AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];

typedef struct
{
    VerTex_Type vexs[MAX_VERTEX_NUM];
    AdjMatrix    arcs;
    int vertex_num;
    int arc_num;
    Graph_Kind kind;
}MGraph;

void Init_MGraph( MGraph &G )
{
    printf("输入图的定点数:");
    scanf("%d", &G.vertex_num );
    printf("输入图的边数:");
    scanf("%d", &G.arc_num );
    printf("输入图的类型(DG:0 DN:1 UDG:2 UDN:3):");
    scanf("%d", &G.kind);
    int i, j;

    printf("输入节点向量(定点之间用空格隔开):");
    for( i=0; i<G.vertex_num; ++i )   
        scanf("%s", G.vexs[i] );

    for( i=0; i<G.vertex_num; ++i )
        for( j=0; j<G.vertex_num; ++j )
            G.arcs[i][j].adj = 0;
}

int Get_Vertex_Location( MGraph G, VerTex_Type V )
{
    int i;
    for( i=0; i<G.vertex_num; ++i )
        if( strcmp( V, G.vexs[i] ) == 0 )
            return i;
    exit(0);
}

void Create_MGraph( MGraph &G )
{
    Init_MGraph( G );
    int i, v1_site, v2_site;
    VerTex_Type v1, v2;

    printf("输入与弧相关联的顶点(形如v1 - v2):\n");
    for( i=0; i<G.arc_num; ++i )
    {
        scanf("%s %*s %s", v1, v2 );
        v1_site = Get_Vertex_Location( G, v1 );
        v2_site = Get_Vertex_Location( G, v2 );
        switch( G.kind )
        {
        case DG:
            G.arcs[v1_site][v2_site].adj = 1;
            break;
        case DN:
            printf("输入权值:");
            scanf("%d", &G.arcs[v1_site][v2_site].adj);
            break;
        case UDG:
            G.arcs[v1_site][v2_site].adj = G.arcs[v2_site][v1_site].adj = 1;
            break;
        case UDN:
            printf("输入权值:");
            scanf("%d", &G.arcs[v1_site][v2_site].adj);
            G.arcs[v2_site][v1_site].adj = G.arcs[v1_site][v2_site].adj ;
            break;
        default:
            exit(0);
        }
    }
}

void Print_MGraph( MGraph G )
{
    int i, j;

    printf("输出弧:\n");
    for( i=0; i<G.vertex_num; ++i )
        for( j=0; j<G.vertex_num; ++j )
            if( G.arcs[i][j].adj )
            {
                printf("( %s--", G.vexs[i]);
                printf("%s )\n", G.vexs[j]);
            }
}

void Print_Matrix( MGraph G )
{
    int i, j;
    printf("图的邻接矩阵为:\n");
    for( i=0; i<G.vertex_num; ++i )
    {
        for( j=0; j<G.vertex_num; ++j )
            printf(" %d", G.arcs[i][j].adj );
        printf("\n");
    }
}

int main()
{
    MGraph G;

    Create_MGraph( G );

    Print_MGraph( G );
    Print_Matrix( G );

    return 0;
}
        
2010-05-30 09:31
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
2010-05-30 09:52
dsgejie
Rank: 1
等 级:新手上路
帖 子:4
专家分:3
注 册:2010-11-19
收藏
得分:0 
厉害
2010-12-25 23:07
快速回复:图的邻接矩阵的建立问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028266 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved