图的存储结构(哈喜老师版本)

1、邻接矩阵

1.1:邻接矩阵的概念

1.2:用邻接矩阵存储图对应的代码

cpp 复制代码
#define Max_Vertex_Num 20    //定义最大顶点数量
typedef char VertexType;
typedef int EdgeType;
typedef struct{
    int vexnum,arcnum;           //图中的顶点数和边数
    VertexType vexs[Max_Vertex_Num]; //存放顶点中的值
    EdgeType edges[Max_Vertex_Num][Max_Vertex_Num]; // 邻接矩阵
}MGraph; // 图的结构

1.3:通过邻接矩阵求顶点的度

1.4:通过邻接矩阵判断两个顶点之间是否有边

1.5 习题

习题1(易)

2.邻接表

2.1:邻接表的概念

2.2:通过邻接表求顶点的度

2.3:用邻接表存储图对应的代码(难)

cpp 复制代码
// 边结点
typedef struct ArcNode {
    int adjvex;              // 邻接点的下标(顶点编号)
    struct ArcNode *nextarc; // 指向下一条边的指针
} ArcNode;

// 顶点结构(邻接表头结点)
typedef struct ArcNode {
    int adjvex;              // 邻接点的下标(顶点编号)
    ArcNode *nextarc; // 指向下一条边的指针
} ArcNode,AdjList[MaxVertexNum];
// 表示可以用AdjList定义一个长度为MaxVertexNum,每个元素的类型为struct ArcNode类型的数组。
// 即AdjList a等价于struct ArcNode a[MaxVertexNum]

// 邻接表表示的图
typedef struct {
    AdjList a;//等价于struct ArcNode a[MaxVertexNum]   // 顶点数组
    int vexnum, arcnum;   // 顶点数、边数
} ALGraph;

3.邻接表和邻接矩阵的对比

4.邻接多重表 (非重点)

5.十字链表 (非重点)

相关推荐
vvilkim40 分钟前
数据结构类型、区别与应用场景:一篇讲透选型逻辑
数据结构
阿卡好可爱5 小时前
Lua 热更新不生效:改完文件线上仍是旧逻辑,package.loaded 与 upvalue 重绑定详解
数据结构·分布式·后端·架构·lua
心仪久了会沦陷1 天前
C语言数据结构入门——树与二叉树详解:概念、堆实现与链式遍历
c语言·数据结构·算法
码少女1 天前
数据结构——图的基础
数据结构
Severus_black1 天前
【C++初阶】list使用及相关实现,思路顺滑流畅!
c语言·数据结构·c++·stl·list
二本咕咕-机械转码1 天前
FreeRTOS深入解析(八)IPC机制之FromISR详解
数据结构·单片机·链表
1-1=01 天前
C# 数据结构和特殊类型
数据结构·c#·.net·.netcore
希和20271 天前
C语言程序设计题|有序数组插入数字冒泡排序
c语言·数据结构·算法
布莱克6052 天前
C++ 中 map 的 insert 与 emplace:key 已存在时会覆盖吗?
开发语言·数据结构·c++·算法·map
D e re k ZH2 天前
C++ 系统学习手记:从语法细节到工程实践
开发语言·数据结构·c++·算法