图的存储
来源:互联网 发布:淘宝玻璃观察窗 编辑:程序博客网 时间:2024/05/13 23:06
我们前面所说的树,它的关系是一对多,至于图,各个节点之间的关系就更为复杂,变为多对多了。
我们要存储一个图,一般分一下几个部分:
图的类型:有向图、有向网、无向图、无向网。其中有向与无向的概念大家都好理解,至于网与图的区别就是图中弧是否对权值进行操作。
我们在处理问题时,大多都是对网操作。
节点个数
弧的条数
我们可以用邻接矩阵来表示节点之间的关系,其中可以存储两节点之间的权值,也可以只表示两节点有关系。这些可以设置其中的值来区别。
一个图的存储大致就是如上,我们来用代码表示这些。
这些是存储结构:
#define MAX_VERTEX_NUM 10 //节点最大值
typedef int VertexType;
typedef int VRType;
typedef enum{DG=1,DN,UDG,UDN} GraphKind; //图的类型:有向图、有向网、无~~
typedef struct { //图的架构
VertexType vexs[MAX_VERTEX_NUM]; //顶点向量
VRType arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; //邻接矩阵
int vexnum,arcnum; //节点和弧的个数
GraphKind kind; //图的类型
}MGraph;
这些是图存储操作:
/*********************************************/
/* CreateGraph始 */
/* 参数:图G */
/* 功能:赋值G.kind */
/*********************************************/
void CreateGraph(MGraph &G)
{
int ch;
printf("\t\t欢 迎 进 行 建 图 操 作\n");
printf("\t\t 1.有 向 图\n");
printf("\t\t 2.有 向 网\n");
printf("\t\t 3.无 向 图\n");
printf("\t\t 4.无 向 网\n");
printf("\t\t 5.退出\n");
ch = 0;
printf("请输入您的选择:\t");
while(0 == ch)
{
scanf("%d",&ch);
if(ch<=UDN&&ch>=DG)
G.kind = (GraphKind)ch;
else if(EXIT != ch)
ch = 0;
switch(ch){
case DG: CreateDG(G); break; //构造有向图
case DN: CreateDN(G); break; //构造有向网
case UDG: CreateUDG(G); break; //构造无向图
case UDN: CreateUDN(G); break; //构造无向网
case EXIT: printf("退出成功!\n");break;
default: printf("输入错误!请重输入:\t");
}
}
/*********************************************/
/* LocateVex */
/* 参数:G,vex */
/* 功能查找顶点位置 */
/*********************************************/
int LocateVex(const MGraph *g,const VertexType vex)
{
int i;
for(i=0;i<g->vexnum;i++)
if(g->vexs[i] == vex) return i;
}
- 图的存储结构(存储、遍历)
- 图的存储结构
- 图的存储结构
- 图的存储-邻接矩阵
- 图的存储
- 图的存储结构
- 图的邻接矩阵存储
- 图的存储方式
- 图的存储
- 图的存储结构
- 图的存储
- 图的存储结构
- 图的存储
- 图的存储结构
- 图的存储
- 图的存储结构
- 图的存储
- 图的存储方式
- HTML5新攻略:如何使用自定义属性
- 付费不一定引来流量,免费也可能有大流量
- [.NET]使用FactoryManager为遗留的静态方法作单元测试
- 静态库、共享库、动态库的创建和使用
- Android系统的图标设计规范 icon 大小
- 图的存储
- Spring的BeanFactory实现类
- C++11的新功能特性对Boost库影响
- Lib库制作
- 初用cygwin需要了解与注意的点
- redis类的实现
- 总结的sql server导数据的几种办法
- windows phone (21) Grid元素的Background和Clip
- Qt中translate、tr关系 与中文问题