图的邻接表存储结构及求各顶点的度

本文介绍了图的邻接表存储结构,包括顶点数组和边表,以及如何利用邻接表计算无向图各顶点的度数。文章通过C/C++代码展示了邻接表的创建、打印和计算顶点度数的函数实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数组与链表相结合的存储方法称为邻接表(Adjacency List)

邻接表的处理方法是:

1.图中顶点用一个一维数组存储,当然,顶点也可以用单链表来存储,不过数组可以较容易地读取顶点信息,更加方便。另外,对于顶点数组中,每个数组元素还需要存储指向第一个邻接点的指针,以便于查找该顶点的边信息。

2.图中每个顶点Vi的所有邻接点构成一个线性表,由于邻接点的个数不定,所以用单链表存储,无向图称为顶点Vi的边表,有向图称为顶点Vi作为弧尾的出边表。


获取图的相关信息:

1.我们要想知道某个顶点的度,就去查找这个顶点的边表中节点的个数。

2.要判断顶点Vi到Vj是否存在边,只需要测试顶点Vi的边表中adjvex是否存在节点Vj的下标j就行了。

3.求顶点的所有邻接点,其实就是对此顶点的边表进行遍历,得到的adjvex域对应的顶点就是邻接点。


对于有向图,邻接表是以顶点为弧尾来存储边表的,逆邻接表是以顶点为弧头来存储边表的。


无向图的邻接表结构:


有向图的邻接表及逆邻接表结构:


对于带权的网图,可以在边表节点定义中再增加一个weight的数据域,存储权值信息即可:



下面的程序就是利用图的邻接表存储结构,实现计算无向图的各个顶点的度数(C/C++):


/*********************************************/

/*    邻接表存储结构      */

/*********************************************/

#include <stdio.h>

#include <stdlib.h>

#include <iostream>

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值