跪求指点
2021-05-28 18:08
采纳率: 83.3%
浏览 64

数据结构,图的邻接表存储结构为什么要设三个结构体?

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;

为什么要定义顶点,边,图三个结构体?

我知道图的邻接表是 所有 顶点串起来的链表 的数组,

所以顶点结构体是头结点,边结构体存储的是与顶点相连的边和点的信息,图结构体是将所有链表封装在一起。

我疑惑的是为什么要将顶点和边结构体区别开来?(可以将顶点和边的信息都放在数据域?)图结构体的边数也不是必要的吧?

感谢解答!

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

1条回答 默认 最新

  • Alexxinlu 2021-05-28 20:11
    最佳回答

    在邻接表中,边实际上就是顶点的一部分,你可以把它们都放到顶点的结构体中,也没问题。这个地方把它单独抽象出来是为了让整个数据结构更加清晰。

    评论
    解决 1 无用
    打赏 举报

相关推荐 更多相似问题