博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
图-存储结构
阅读量:6736 次
发布时间:2019-06-25

本文共 1008 字,大约阅读时间需要 3 分钟。

1,邻接矩阵(数组)

①邻接矩阵是指用一个二维数组存储顶点间的相邻关系。

  如果是无权值的图,如果两点是相邻边则矩阵对应元素值为1,否则为0.

  如果是网,则用其权值表示相邻边的元素值,否则用一个无穷数表示。(因为0,甚至负数都可以表示权值)

②用一个顺序表来存储顶点。

#define INFINITY 4294967295; //定义一个无穷大的数,这里假定是32位的最大数,即2^32-1。

#define MAX_VERTEX_NUM 20;//顶点数

typedef enum GraphType{dg,udg,dn,udn};//有向图,无向图,有向网,无向网

typedef struct AdjMWGraph

{

 int Edge[MAX_VERTEX_NUM][MAX_VERTEX_NUM];  //点矩阵

 int Vertices[MAX_VERTEX_NUM]; //顶点

 int numE;            //当前的边数

 int numV;            //当前的顶点数

 emu GraphType g_kind;//图的类型

};

2,邻接表

用链表和数组结合起来存储节点之间的关系。

typedef struct EdgeNode//边表节点

{

int adjVex;//邻接点的位置

struct ArcNode *nextEdge;//指向下一条边的指针

//int weight;//权值,如果是网

}EdgeNode;

typedef struct vNode//顶点边的节点

{

int vertex;//顶点位置

EdgeNode *firstEdge;//顶点的第一条邻接边

}VertexNode,AdjList[MAX_VERTEX_NUM]; 

typedef struct

{

AdjList adjList;//邻接表

 int numE;            //当前的边数

 int numV;            //当前的顶点数

emu GraphType g_kind;//图的类型

}ALGraph;

3,十字链表

十字链表是对于有向图来说的,指的是对于每一条弧,存储其弧头和弧尾,对于每一个顶点存储其入弧和出弧。

4,邻接多重表

 邻接多重表是对于无向图来说的,类似于十字链表。

转载于:https://www.cnblogs.com/273809717/archive/2012/12/20/2817591.html

你可能感兴趣的文章
CentOS6.5 配置防火墙+允许指定ip访问端口
查看>>
python测试一
查看>>
vc6.0 托盘图标
查看>>
Python之路【第十一篇】:三目运算、不同数据类型的存储方式及深浅拷贝(copy模块)、列表推导式...
查看>>
比map更强大的multimap
查看>>
JS事件中的对象
查看>>
工作流引擎Oozie(一):workflow
查看>>
repo sync下载脚本
查看>>
spfa(前向星)
查看>>
第一个js程序
查看>>
jq删除元素
查看>>
协程实现socket并发编程
查看>>
命令纠正工具 thefuck 的简单使用
查看>>
SQL Server附加数据库出现错误5123的正确解决方法
查看>>
插入图片、背景图片
查看>>
c++官方文档-class
查看>>
腾讯2017暑期实习编程题2
查看>>
Android定位&地图&导航——基于百度地图,实现自定义图标绘制并点击时弹出泡泡...
查看>>
Asymptote 学习记录(3) 画赵爽弦图练习
查看>>
泰勒公式的发现以及证明
查看>>