图的高siao存储结构——链式前向星

本文介绍了图论中三种常见的图存储方式:邻接矩阵、邻接表和链式前向星,并给出了每种存储方式的特点及应用场景。通过具体代码示例展示了如何使用这些存储方式。

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

假期训练题好多啊,都没时间写博客了。。

(其实就是懒)

 

前几天jieba开了图论,好多新东西,一脸懵逼。。。

讲到链式前向星的时候还以为是星打错了,之后才具体了解。

现在会使用的图的存储方式有三种

1、邻接矩阵

对于数据不大的图,用这个方法存比较简明。开一个a【n】【n】的数组,可以记录联通情况或者权值(如果有权值的话)

2、邻接表

对于每个节点i,开一个vector用来存储以其为顶点或者起始点的边(可以是结构体,用来存权值,终点等信息)

具体代码:

vector<bian> ljb[n];

//插入边时:
bian tem(b)//构造
ljb[a].push_back(tem);

3、链式前向星

 
  

struct node//这个是边的结构体
{
int to;//记录这条边的中点
int w;//权值
int next; //当前顶点所对应的下一条边
};

 
  

node bian[80010];
int head[80010];/*用来存储每个顶点的第一条边在bian数组中的位置,初始化 为-1,若head[i]==-1,说明没有以顶点i为起点的边*/

 
  


//更新前向星的函数:
int p=0;//用来记边数的全局变量
void add(int u,int v,int w)//起点为u,终点为v,权值为w
{
bian[p].to=v;
bian[p].w=w;
bian[p].next=head[u];
head[u]=p++;/*在更新时是倒着更新的,所以最后遍历的顺序是从后往前*/
}

//遍历整个图时的代码:
for(int i=1;i<=n;i++)
{
    for(int j=head[i];j!=-1;j=bian[j].next)
       {......}
      //以i为起点,以bian[j].to为终点的边
  
}

把自己这几天的收获写在这里,方便加深一下印象。假期一半还没过去,不能松懈啊!

转载于:https://www.cnblogs.com/brotherHaiNo1/p/7267792.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值