typedef struct VNode
{
VerTexType data; //顶点信息
ArcNode *firstarc; //指向第一条依附该顶点的边的指针
}VNode,AdjList[Num];
typedef struct ArcNode //边结点
{
int adjvex; //该边所指向的顶点的位置
struct ArcNode *nextarc; //指向下一条边的指针
OtherInfo info; //和边相关的信息(权值等)
}ArcNode;
typedef struct
{
AdjList vertices; //存放各个顶点的数组
int vexnum, arcnum; //图的当前顶点数和弧数
}ALGraph;
为什么要定义顶点,边,图三个结构体?
我知道图的邻接表是 所有 顶点串起来的链表 的数组,
所以顶点结构体是头结点,边结构体存储的是与顶点相连的边和点的信息,图结构体是将所有链表封装在一起。
我疑惑的是为什么要将顶点和边结构体区别开来?(可以将顶点和边的信息都放在数据域?)图结构体的边数也不是必要的吧?
感谢解答!