图
图的存储形式有很多,例如邻接矩阵,邻接表,多重邻接表,十字链表
这里将介绍图的邻接表存储形式:
邻接表的实现思想:
邻接表的概念我们就不再进行赘述,主要是将实现邻接表的实现思路捋一捋。
首先,邻接表存储的基本思想:对于图的每个顶点vi,我们将所有邻接vi的顶点连接成一个单链表,称为顶点vi的边表(对于有向图则称为出边表),所有边表的头指针和存储顶点信息的一维数组构成了顶点表。
而邻接表有着两种格式,一是顶点表节点,另外一种是边表节点。
顶点表节点由存储数据的数据域和存储边表头结点的指针域所组成。 边表节点则是由存储边的终点在顶点表中的下标的数据域和指向下一个节点的指针域组成。
接下来是具体代码的实现:
一、首先是边表节点的定义
typedef char VexTexType;
typedef int OtherInfo;
#define MaxVexNum 100 //定义最大顶点数为100
class ArcNode{//边
public:
int adjVex;//该边所指向的顶点的位置
ArcNode* next;//指向下一条边
OtherInfo info;//其他信息,如权值
ArcNode(int adjvex) {
this->adjVex = adjvex;
this->next = NULL;
}
//构造函数
ArcNode(int adjvex,