C++实现:邻接结构判断与添加边详解

需积分: 10 14 下载量 78 浏览量 更新于2024-08-07 1 收藏 4.35MB PDF 举报
在本篇文档中,主要讨论了关于邻接矩阵和邻接表两种常见的图数据结构在C++编程中的应用,特别是如何判断顶点之间是否存在边以及如何添加边。这是计算机图形学和算法设计的基础部分。 1. **邻接矩阵判定边的存在**: 在邻接矩阵存储结构中,判定两个顶点i和j之间是否有边,通过访问矩阵中的a[i][j],如果其值等于`NoEdge`,则表示没有边,调用`AdjacencyGraphic<DataType>::exist(i,j)`函数会检查输入点是否越界并判断边的存在。如果越界或有边,函数返回`true`,否则返回`false`。 2. **邻接表判定边的存在**: 邻接表则通过遍历起点为头结点的链表来判断边的存在。在`LinkedGraph<DataType>::exist(i,j)`函数中,首先验证输入点是否越界,然后使用链表的查找功能`findNode(j)`,如果找到节点j则返回`true`,表示存在边,反之返回`false`。 3. **添加边到邻接矩阵**: 在邻接矩阵中添加边涉及到更新矩阵元素,将`noEdge`替换为边的权重。`AdjacencyGraphic<DataType>::add(i,j,w)`方法接受起点i、终点j和权重w,如果输入点有效,就更新矩阵元素并可能根据图的类型对称添加边。 4. **邻接表添加边**: 对于邻接表,添加边操作简单得多,只需在对应顶点的边链表中添加一个新的边结点。这种方法更灵活,尤其是当边的插入频繁且需要快速查询时。 文档内容还提到了一本名为《妙趣横生的算法(C++语言实现)》的书籍,该书由胡浩等人编写,旨在以易于理解的方式介绍常用的数据结构和算法,包括基础的排序和查找算法,高级的图算法如拓扑排序和最小生成树,以及实际应用中的算法题。这本书不仅适合初学者,也适合作为有一定C++基础的学习者的进阶教程,尤其适合准备参加IT面试或编程竞赛的人群。书中还提供了高清教学视频,帮助读者深化理解和实践算法。版权信息和联系方式也一并列出。