结构体定义
//边表结点
typedef struct ArcNode {
int adjvex;//存储该弧指向顶点值
struct ArcNode* next;//下一条弧指针
}Arcnode;
//顶点表结点
typedef struct VNode {
int data;//顶点数据域
ArcNode* first;//顶邻接的第一条边
}VNode,AdjList[MaxVertexNum];
//创建邻接表
typedef struct {
AdjList vertices;//邻接表
int vexnum, arcnum;//顶点数和弧数
}ALGraph;
初始化
void InitALGraph(ALGraph* A,int vexnum){
A->vexnum = vexnum;//初始顶点数
A->arcnum = 0;//初始弧数为0
for (int i = 0; i < MaxVertexNum; i++)
{
A->vertices[i].data = i;//顶点由0开始编号
A->vertices[i].first = NULL;//初始每个顶点指针域为NULL
}
}
基本操作
bool AddEdge(ALGraph* A, int v1, int v2)
{
Arcnode* p = (Arcnode*)malloc(sizeof(Arcnode));
p->adjvex = v2;
p->