前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >重拾算法-3.1-图论-图的存储

重拾算法-3.1-图论-图的存储

作者头像
luciozhang
发布2023-04-22 16:42:16
1620
发布2023-04-22 16:42:16
举报
文章被收录于专栏:前端lucio前端lucio

为什么会突然想起要重拾算法呢? 上次认真的学习、复习算法已经是3年以前了,那时候是为了校招,在这之后算法似乎变的不太重要。我只是矜矜业业地做好前端开发该做的工作,但在业务开发越来越熟练的时候,我发现自己的视野也会变的越来越窄。 做程序开发,广度和深度是同样重要的,也许现在的工作中不会直接用上,但是算法、设计模式等等这些底层的知识时候熟练掌握,是我们能不能走得更远的前提,我觉得是时候,再重拾起已经快遗忘的算法,为自己的下一个三年,储备更多的基础知识。 作为前端开发,本系列的算法代码实现,将全部用TypeScript实现,同时也会贴一些力扣的题目方便上手实践。

图的存储

本文主要介绍算法题中,有向图的存储方式。

1. 邻接矩阵

实现方式

图的结点编号为 1 ~ n

g[i][j] 表示点i到j的边权

若i到j没有边,g[i][j]视情况赋值-1、0、inf

存在问题:

​ 不能保存重边

​ 空间消耗太大O(n^2)

2. 邻接表 —— vector实现

实现方式

vector<int> g[], e[];

g[i][j] 保存以点i为起点的第j条边的终点

e[i][j] 保存相应边的边权

代码实现

添加边

代码语言:javascript
复制
void add( int u, int v, int c ) 
{
    g[u].push_back(v);
      e[u].push_back(c);
}

遍历以u为起点的边

代码语言:javascript
复制
for( int i = 0; i < g[u].size(); ++i ) 
{
    int v = g[u][i], c = e[u][i];
}

3. 邻接表 —— 数组实现

实现方式

结点编号 1 ~ n , 边编号 0 ~ e-1

int first[], to[], nxt[], cost[], e;

first[u] :以u为起点的第一条边的编号,初始为-1

to[i]: 边i的终点

nxt[i] :与边i起点相同的下一条边 的编号

cost[i] :边i的边权

e: 总边数

代码实现

添加边

代码语言:javascript
复制
void add( int u, int v, int c )
{
    to[e] = v; cost[e] = c;
    nxt[e] = first[u];
    first[u] = e++;
}

遍历以u为起点的边

代码语言:javascript
复制
for( int i = first[u]; i != -1; i = nxt[i] ) 
{
    int v = to[i], c = cost[i];
}

注意邻接表保存的是单向边,无向图需要插入两条有向

代码语言:javascript
复制
for( int i = 0; i < m; ++i ) {
    scanf( “%d%d”, &amp;u, &amp;v );
    add(u, v); add(v, u);
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 图的存储
    • 1. 邻接矩阵
      • 实现方式
    • 2. 邻接表 —— vector实现
      • 实现方式
      • 代码实现
    • 3. 邻接表 —— 数组实现
      • 实现方式
      • 代码实现
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档