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

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

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

报告相同问题?

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看