码迷,mamicode.com
首页 > 其他好文 > 详细

图的邻接矩阵存储数据结构--自己写数据结构

时间:2014-12-28 17:02:53      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:

头文件graph.h


#ifndef _GRAPH_H_
#define _GRAPH_H_

#define  MAX_VER 100
#define  ENDLESS 65535

typedef char VertexType;
typedef int  EdgeType;

typedef struct _Graph
{
    VertexType  ver[MAX_VER];
    EdgeType    edge[MAX_VER][MAX_VER];
    int num_ver,num_edge;    
}Graph,*pGraph;

int locate(pGraph pg,char ch);
void creat_array_graph(pGraph pg);
void print_graph(Graph g);

#endif


实现文件graph.c文件如下

/****************************
文件名:/graph.c 
时间:2014.12.28
作者:XIAO_PING_PING
运行环境:DEV-C++ 4.9.9.2 
内容:图的邻接矩阵存储数据结构
功能:自己写数据结构 
*****************************/
#include <string.h>
#include <stdlib.h>

#include "graph.h"

int locate(pGraph pg,char ch)
{
    int i = 0;
    
    while(ch != pg->ver[i])
    {
        i++;   
    }
    
    return i;    
}

void creat_array_graph(pGraph pg)
{
    int i,j;  
    char cout,cin;
    int num_out,num_in;
    int weight;
    printf("输入顶点数:"); 
    scanf("%d",&pg->num_ver);
    printf("输入边数:"); 
    scanf("%d",&pg->num_edge);
    printf("输入顶点数据:"); 
    for(i = 0;i < pg->num_ver;i++)
    {
        pg->ver[i] = getchar();
        while('\n' == pg->ver[i])
        {
            pg->ver[i] = getchar();           
        }
        printf("点%d:%c\n ",i,pg->ver[i]); 
    }
    
    for(i = 0;i < pg->num_ver;i++)
    {
        for(j = 0;j < pg->num_ver;j++)
        {
            pg->edge[i][j] = ENDLESS;            
        }     
    }
    for(i = 0;i < pg->num_edge;i++)
    { 
        printf("输入要连接的顶点:");  
        cout = getchar();
        while('\n' == cout)
        {
            cout = getchar();           
        }
        cin = getchar();
        while('\n' == cin)
        {
            cin = getchar();           
        }
        printf("权重:"); 
        scanf("%d",&weight);
        num_out = locate(pg,cout);
        num_in = locate(pg,cin);
        pg->edge[num_out][num_in] = weight;
        pg->edge[num_in][num_out] = weight;
    }
} 

void print_graph(Graph g)
{
    int i, j;
    for(i = 0; i < g.num_ver; i++)
    {
        for(j = 0; j < g.num_ver; j++)
        {
            printf("%d      ", g.edge[i][j]);
        }
        printf("\n");
    }
}

测试文件test.c

#include <string.h>
#include <stdlib.h>

#include "graph.h"

int main()
{
    Graph gph;
    
    creat_array_graph(&gph);
    print_graph(gph);
    
    getch();
    return 0;    
}

运行结果如下:

技术分享

图的邻接矩阵存储数据结构--自己写数据结构

标签:

原文地址:http://blog.csdn.net/xiao_ping_ping/article/details/42214117

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!