tfnmdmx 2021-05-28 18:08 采纳率: 83.3%
浏览 77
已采纳

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

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
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 关于 openpyxl 处理excel文件地问题
  • ¥15 MS中不知道高分子的构型怎么构建模型
  • ¥60 QQOP数据,什么是op数据号,怎么提取op数据!能不能大量提取(语言-c语言)
  • ¥15 matlab代码 关于微分方程和嵌套的分段函数。
  • ¥15 onlyoffice编辑完后立即下载,下载的不是最新编辑的文档
  • ¥15 求caverdock使用教程
  • ¥15 Coze智能助手搭建过程中的问题请教
  • ¥15 12864只亮屏 不显示汉字
  • ¥20 三极管1000倍放大电路
  • ¥15 vscode报错如何解决