我是靠谱客的博主 顺心黑夜,最近开发中收集的这篇文章主要介绍C语言实现数据结构代码(四)-图-图的存储结构一、邻接矩阵二、邻接表三、邻接多重表,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、邻接矩阵

//邻接矩阵结构体定义
typedef struct 
{
	int no; //顶点编号
	char info;  //顶点其他信息,题目中无要求可不写 
}VertexType; 	//顶点类型 

typedef struct
{
	int edge[maxSize][maxSize];		//邻接矩阵定义,如果是有权图,int改为float 
	int n,e;			//分别为顶点数和边数
	VertexType vex[maxSize];		//存放结点信息 
}MGraph;				//图的邻接矩阵类型

二、邻接表

//邻接表存储的定义表示
typedef struct ArcNode
{
	int adjvex;  //该边所指向的结点的位置
	ArcNode *nextarc;   //指向下一条边的指针
	int info;			//该边的相关信息(如权值),这一句用的不多,可不写 
}ArcNode;

typedef struct
{
	char data;			//顶点信息 
	ArcNode *firstarc;	//指向第一条边的指针 
}VNode;

typedef struct
{
	VNode adjlist[maxSize];  //邻接表
	int n,e;				//顶点数和边数 
}AGraph;			//图的邻接表类型 

三、邻接多重表

 

 

#define MAX_VERTEX_NUM 20                   //图中顶点的最大个数
#define InfoType int                        //边含有的信息域的数据类型
#define VertexType int                      //图顶点的数据类型
typedef enum {unvisited,visited}VisitIf;    //边标志域
typedef struct EBox{
    VisitIf mark;                           //标志域
    int ivex,jvex;                          //边两边顶点在数组中的位置下标
    struct EBox * ilink,*jlink;             //分别指向与ivex、jvex相关的下一个边
    InfoType *info;                         //边包含的其它的信息域的指针
}EBox;
typedef struct VexBox{
    VertexType data;                        //顶点数据域
    EBox * firstedge;                       //顶点相关的第一条边的指针域
}VexBox;
typedef struct {
    VexBox adjmulist[MAX_VERTEX_NUM];//存储图中顶点的数组
    int vexnum,degenum;//记录途中顶点个数和边个数的变量
}AMLGraph;

最后

以上就是顺心黑夜为你收集整理的C语言实现数据结构代码(四)-图-图的存储结构一、邻接矩阵二、邻接表三、邻接多重表的全部内容,希望文章能够帮你解决C语言实现数据结构代码(四)-图-图的存储结构一、邻接矩阵二、邻接表三、邻接多重表所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部