⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 头文件.txt

📁 高一凡的数据结构源码
💻 TXT
字号:
 // c7-1.h 图的数组(邻接矩阵)存储表示
 #define INFINITY INT_MAX // 用整型最大值代替∞
 #define MAX_VERTEX_NUM 26 // 最大顶点个数
 enum GraphKind{DG,DN,UDG,UDN}; // {有向图,有向网,无向图,无向网}
 typedef struct
 {
   VRType adj; // 顶点关系类型。对无权图,用1(是)或0(否)表示相邻否;对带权图,则为权值
   InfoType *info; // 该弧相关信息的指针(可无)
 }ArcCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; // 二维数组
 struct MGraph
 {
   VertexType vexs[MAX_VERTEX_NUM]; // 顶点向量
   AdjMatrix arcs; // 邻接矩阵
   int vexnum,arcnum; // 图的当前顶点数和弧数
   GraphKind kind; // 图的种类标志
 };


 // c7-2.h 图的邻接表存储表示
 #define MAX_VERTEX_NUM 20
 enum GraphKind{DG,DN,UDG,UDN}; // {有向图,有向网,无向图,无向网}
 struct ArcNode
 {
   int adjvex; // 该弧所指向的顶点的位置
   ArcNode *nextarc; // 指向下一条弧的指针
   InfoType *info; // 网的权值指针
 }; // 表结点
 typedef struct
 {
   VertexType data; // 顶点信息
   ArcNode *firstarc; // 第一个表结点的地址,指向第一条依附该顶点的弧的指针
 }VNode,AdjList[MAX_VERTEX_NUM]; // 头结点
 struct ALGraph
 {
   AdjList vertices;
   int vexnum,arcnum; // 图的当前顶点数和弧数
   GraphKind kind; // 图的种类标志
 };


 // c7-3.h 有向图的十字链表存储表示
 #define MAX_VERTEX_NUM 20
 struct ArcBox // 弧结点
 {
   int tailvex,headvex; // 该弧的尾和头顶点的位置
   ArcBox *hlink,*tlink; // 分别为弧头相同和弧尾相同的弧的链域
   InfoType *info; // 该弧相关信息的指针,可指向权值或其他信息
 };
 struct VexNode // 顶点结点
 {
   VertexType data;
   ArcBox *firstin,*firstout; // 分别指向该顶点第一条入弧和出弧
 };
 struct OLGraph
 {
   VexNode xlist[MAX_VERTEX_NUM]; // 表头向量(数组)
   int vexnum,arcnum; // 有向图的当前顶点数和弧数
 };


 // c7-4.h 无向图的邻接多重表存储表示
 #define MAX_VERTEX_NUM 20
 enum VisitIf{unvisited,visited};
 struct EBox
 {
   VisitIf mark; // 访问标记
   int ivex,jvex; // 该边依附的两个顶点的位置
   EBox *ilink,*jlink; // 分别指向依附这两个顶点的下一条边
   InfoType *info; // 该边信息指针,可指向权值或其他信息
 };
 struct VexBox
 {
   VertexType data;
   EBox *firstedge; // 指向第一条依附该顶点的边
 };
 struct AMLGraph
 {
   VexBox adjmulist[MAX_VERTEX_NUM];
   int vexnum,edgenum; // 无向图的当前顶点数和边数
 };


 // c7-21.h 图的邻接表存储表示(与单链表的变量类型建立联系)
 #define MAX_VERTEX_NUM 20
 enum GraphKind{DG,DN,UDG,UDN}; // {有向图,有向网,无向图,无向网}
 struct ElemType // 加
 {
   int adjvex; // 该弧所指向的顶点的位置
   InfoType *info; // 网的权值指针
 };

 struct ArcNode // 改
 {
   ElemType data; // 除指针以外的部分都属于ElemType
   ArcNode *nextarc; // 指向下一条弧的指针
 }; // 表结点

 typedef struct
 {
   VertexType data; // 顶点信息
   ArcNode *firstarc; // 第一个表结点的地址,指向第一条依附该顶点的弧的指针
 }VNode,AdjList[MAX_VERTEX_NUM]; // 头结点

 struct ALGraph
 {
   AdjList vertices;
   int vexnum,arcnum; // 图的当前顶点数和弧数
   GraphKind kind; // 图的种类标志
 };
 #define LNode ArcNode // 加,定义单链表的结点类型是图的表结点的类型
 #define next nextarc // 加,定义单链表结点的指针域是表结点指向下一条弧的指针域
 typedef ArcNode *LinkList; // 加,定义指向单链表结点的指针是指向图的表结点的指针



 // c7-31.h 有向图的十字链表存储表示(与单链表的变量类型建立联系)
 #define MAX_VERTEX_NUM 20
 struct ArcBox1 // 用来定义hlink的类型
 {
   int tailvex,headvex; // 该弧的尾和头顶点的位置
   InfoType *info; // 该弧相关信息的指针,可指向权值或其他信息
   ArcBox1 *hlink,*tlink; // 分别为弧头相同弧尾相同的弧的链域
 };
 struct ElemType
 {
   int tailvex,headvex; // 该弧的尾和头顶点的位置
   InfoType *info; // 该弧相关信息的指针,可指向权值或其他信息
   ArcBox1 *hlink;
 };
 struct ArcBox
 {
   ElemType data;
   ArcBox *tlink;
 };
 struct VexNode // 顶点结点
 {
   VertexType data;
   ArcBox1 *firstin; // 指向该顶点第一条入弧
   ArcBox *firstout; // 指向该顶点第一条出弧
 };
 struct OLGraph
 {
   VexNode xlist[MAX_VERTEX_NUM]; // 表头向量(数组)
   int vexnum,arcnum; // 有向图的当前顶点数和弧数
 };
 #define LNode ArcBox // 加,定义单链表的结点类型是图的表结点的类型
 #define next tlink // 加,定义单链表结点的指针域是表结点指向下一条出弧的指针域
 typedef ArcBox *LinkList; // 加,定义指向单链表结点的指针是指向图的表结点的指针

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -