在计算机科学中,图是一种数据结构,用于表示对象之间的关系或连接。在C语言中,图可以使用多种方式存储,其中一种常见的方式是邻接矩阵。这个“图的存储.ppt”教程详细介绍了如何用C语言实现图的邻接矩阵存储。 邻接矩阵是一个二维数组,用于表示图中每个顶点对之间是否存在边。数组的每个元素代表一个顶点对之间的关系。如果元素值为1或某个非零权重,表示两个顶点之间存在边;如果为0,则表示没有边。对于无权图,通常使用1来表示相邻;对于有权图,元素会存储边的权重。 在提供的代码中,定义了一个`AdjMatrix`结构体数组,用来存储邻接矩阵。`AdjMatrix`的每个元素是一个`ArcCell`结构体,包含两个字段:`adj`表示边的权值或相邻关系,`info`是一个指向额外信息的指针,例如,如果边带有其他属性(如颜色、距离等),可以在这里存储。 `MGraph`结构体定义了整个图的数据结构,包括: - `vexs`:存放顶点信息的一维数组,每个顶点的信息可以是字符串或其他类型。 - `arcs`:邻接矩阵的二维数组,用于存储图的边信息。 - `vexnum`:当前图的顶点数量。 - `arcnum`:当前图的边或弧数量。 - `kind`:图的种类标志,可以是`DG`(有向图)、`DN`(有向网)、`UDG`(无向图)或`UDN`(无向网)。 `LocateVex`函数用于查找指定顶点在图中的位置,通过遍历顶点数组并比较字符串来实现。 `InitAM`函数初始化图的邻接矩阵。它首先询问用户输入顶点数、边数以及边是否带有额外信息。然后,根据用户输入的顶点信息填充`vexs`数组,并将邻接矩阵的所有元素设置为无穷大(`INFINITY`),表示默认情况下没有边。 `CreateDG`和`CreateDN`函数分别用于创建有向图和有向网。这两个函数接受一个`MGraph`引用作为参数,用户可以输入边的起点、终点,对于有向网还需要输入边的权重。根据用户输入,它们更新邻接矩阵中相应的元素,设置为1或相应的权重值。如果边有附加信息,`info`字段会被分配内存并输入相关信息。 这些函数和数据结构共同构成了C语言中基于邻接矩阵的图表示。通过这样的表示,可以方便地进行图的遍历、搜索、最短路径计算等操作。在实际应用中,可以根据需要扩展这些基本功能,例如添加无向图的创建函数,或者实现图的其他操作。
- 粉丝: 1
- 资源: 21
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助