数据结构之矩阵法实现图

来源:互联网 发布:二木花花男的淘宝店 编辑:程序博客网 时间:2024/05/18 02:45

原始图











矩阵


以下是代码


#include "stdio.h"
#include "stdlib.h"
#define row 5
#define column 5
#define vexs_num 5
/*
实现功能:用矩阵的方法存储图
编译环境:win7 64b,vc6.0
日期 :2015/8/7
作者 :wtt561111
*/
typedef char VexType;
typedef int AdjType;
struct GraphMatrix{
int n;
VexType *vexs;//用什么符号表示点(1,2,3或者a,b,c)
AdjType **arcs;//二维矩阵。如果只是判断是否有边,可是用0和1.但是如果有权,需要用浮点数表示
};
typedef struct GraphMatrix *PGraphMatrix;
/*****************主函数***********************************************/
int main(){
//创建一个图
PGraphMatrix gm=(PGraphMatrix)malloc(sizeof(struct GraphMatrix));
if(gm==NULL){
printf("out of space\n");
return -1;
}
//创建一维数组存储点的信息
char *vexs_info=(char *)malloc(sizeof(char)*vexs_num);


//初始化点的信息
vexs_info="01234";


//将点的信息复制到图
gm->vexs=vexs_info;


//创建二维矩阵存储边的信息
int **edge_info=(int**)malloc(sizeof(int *)*row);
for(int i=0;i<row;i++){
edge_info[i]=(int *)malloc(sizeof(int)*column);
}


//初始化边的信息
edge_info[0][0]=0;edge_info[0][1]=1;edge_info[0][2]=0;edge_info[0][3]=0;edge_info[0][4]=0;
edge_info[1][0]=1;edge_info[1][1]=0;edge_info[1][2]=0;edge_info[1][3]=0;edge_info[1][4]=1;
edge_info[2][0]=0;edge_info[2][1]=1;edge_info[2][2]=0;edge_info[2][3]=1;edge_info[2][4]=0;
edge_info[3][0]=1;edge_info[3][1]=0;edge_info[3][2]=0;edge_info[3][3]=0;edge_info[3][4]=0;
edge_info[4][0]=0;edge_info[4][1]=0;edge_info[4][2]=0;edge_info[4][3]=1;edge_info[4][4]=0;


//将边的信息复制到图
gm->arcs=edge_info;


printf("第一个点: %c\n",gm->vexs[0]);
printf("第一个边: %d\n",gm->arcs[0][0]);
return 0;


}


0 0
原创粉丝点击