二十九、图论算法(图的存储结构)

图常用的存储结构设计方式为 :邻接矩阵(二维数组),邻接表(链表)

其实两种的存储结构可以参考二叉树的存储结构设计方式,思想大同小异,所有的数据结构都是由链表构成的,只不过时思想的升华而已

这里代码给出了一种十字链表法,对于有向图的一种合理的实现方式,并且个人感觉没必要纠结与图的存储结构该去怎么实现,最主要的时贯通思想。

 

#include <stdio.h>
#include <stdlib.h>
#define Size 1033

//入度结点
typedef struct IDNode
{
	int iDIndex; //入度结点位置
	struct IDNode *nextID; //指向下一个入度结点
}IDNode, *InDegreeNode;

//出度结点
typedef struct ODNode
{
	int oDIndex; //出度结点位置
	struct ODNode *nextOD; //指向下一个出度结点位置
}ODNode, *OutDegreeNode;

//图的结点
typedef struct GNode
{
	char *data; //数据域,这里假设存储字符串
	InDegreeNode firstID; //指向第一个入度结点
	OutDegreeNode firstOD; //指向第一个入度结点
}GNode, *GraphNode;

//图的存储结构,图数组
typedef struct Graph
{
	GraphNode *graphs; //定义图数组
	int size; //图的总大小
	int count; //已有结点数
}Graph;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值