图 结构
来源:互联网 发布:网络时间校准器 编辑:程序博客网 时间:2024/04/28 09:28
图是数据结构里面的重要一章。通过图,我们可以判断两个点之间是不是具有连通性;通过图,我们还可以计算两个点之间的最小距离是多少;通过图,我们还可以根据不同的要求,寻找不同的合适路径。当然,有的时候为了计算的需要,我们还需要从图中抽象出最小生成树,这样在遍历计算的时候就不需要持续判断是不是遇到了循环节点。当然,这所有的一切都是从图的表示开始的。
1)矩阵表示
矩阵表示可以说是最简单的表示方法,如果说一个图中有5个点,那么我们就可以构建一个5*5的矩阵。如果点和点之间存在连接,那么填上1;反之如果不存在连接,那么可以用0表示,当然对角线上面的点是没有意义的。如下图所示:
- static int graph[5][5] =
- {
- {0, 1, 0, 1, 1},
- {1, 0, 1, 0, 1},
- {0, 1, 0, 1, 0},
- {1, 0, 1, 0, 1},
- {1, 1, 0, 1, 0}
- };
- static int graph[5][5] =
- {
- {0, 0, 0, 0, 0},
- {1, 0, 0, 0, 0},
- {0, 1, 0, 0, 0},
- {1, 0, 1, 0, 0},
- {1, 1, 0, 1, 0}
- };
- static int graph[5][5] =
- {
- {0, 0, 0, 0, 0},
- {3, 0, 0, 0, 0},
- {0, 6, 0, 0, 0},
- {8, 0, 4, 0, 0},
- {9, 2, 0, 7, 0}
- };
2)数组结构
为了改变矩阵浪费空间的特点,我们可以建立一个只有顶点和边组成的数据空间。比如说,我们定义一个这样的结构:
- typedef struct _LINE
- {
- int start;
- int end;
- int weight;
- int isDirection;
- }LINE;
但是,我们还是觉得有遗憾的地方。这个数据结构过分强调了边的意义和重要性,忽略了顶点本身的含义。因为,我们在强调边的时候,应该添加进顶点的相关特性。离开顶点的支持,单纯的边信息是没有什么含义的。
3)基于顶点链表的图表示
首先,我们定义顶点的基本结构:
- typedef struct _LINE
- {
- int end;
- int weight;
- struct _LINE* next;
- }LINE;
- typedef struct _VECTEX
- {
- int start;
- int number;
- LINE* neighbor;
- }VECTEX;
- typedef struct _PATH
- {
- int start;
- int end;
- int lenth;
- LINE* next;
- }PATH;
注意事项:
1)数组和链表是图结构的基础,朋友们应该好好掌握
2)每一种数据结构都有自己的应用场合,关键是理解其中的思想和方法
3)图的表示是图运算的基础,掌握它们是我们进一步学习的基本条件
- 图 结构
- 图结构
- 图结构
- BMP图结构属性
- 图的存储结构
- 图的存储结构
- 图的存储结构
- 英语结构框架图
- 图的基本结构
- 类图结构
- 文件结构“图”
- 图结构入门
- 创建图结构
- 图的存储结构
- 图的存储结构
- 图的存储结构
- 图的存储结构
- 【图的存储结构】
- 基数排序
- 组合体的尺寸标注
- 打造自己的专属游戏(传奇私服搭建)
- 面向对象
- protel99se常用快捷键
- 图 结构
- 关于WM_ERASEBKGND和WM_PAINT的深刻理解
- [转]关于unicode,mbcs,utf8,charset,encoding等相关概念的说明
- xfire客户端
- C语言中的宏定义
- 一步一步写算法(之克鲁斯卡尔算法 中)
- 黑马程序员 关闭和释放连接 Close方法与Dispose方法
- 入侵已没有意义
- 图的基本结构