当前位置: 首页 > java >正文

Y1——链式前向星

知识点

模版——链表的前插法

head表示头结点的下标

ver[i]表示结点i 的值

tot存储当前已经用到了哪个

add用于将x插到头结点

int head=1;
intt ver[N],Next[N];
int ttot=-1;
void add(int x){ver[++tot]=x;Next[tot]=head;head=tot;
}

常见的链式前向星三种实现形式:


1、结构体形式的实现

通过结构体记录每条边的信息

定义一个结构体
其中 to 表示指向的点,next 表示下一个节点存储的下标,c 表示权值

struct edge{int to,next,c;
}e[N];
int cnt=0;
void add(int u,int v,int c){cnt++;e[cnt].to=v;e[cnt].c=c;e[cnt].next=head[u];head[u]=cnt;
}

 使用之前将head数组清空为-1


2、数组模拟实现

通过多个数组记录每条边的信息。
head[u]即表示节点 u 对应的边表的头节点
e[]记录这条边指向的点
w[]记录边的权值
ne[]记录下一个点的位置
加边函数的写法:

void add(int a,int b,int c){e[idx]=b;//idx记录边的编号 w[idx]=c;//e[idx]=b,w[idx]=c用来记录边的信息 ne[idx]=head[a];//-用来添加一条边 head[a]=idx++;//  /
}

 使用之前将head数组清空为-1


3、vector 实现

使用 vector 嵌套 vector

最外层 vector 需要指定大小,方便加边。

定义:vector<vector<int>> a(100);

加边:e[a].push_back(b);

练习

读入一个有 n 个节点,m 条边的有向图

struct node {int to, next;
} edge[1000];
int head[N],cnt = 0; 
int n, m;
void add(int a, int b) {edge[++cnt].to = b;edge[cnt].next = head[a], head[a] = cnt;
}
int main() {memset(head, -1,sizeof head); cin >> n >> m;for (int i = 0; i< m; i++) {int a, b;cin >> a >> b; add(a, b);}return 0;
}
int head[N],e[N],ne[N],idx = 0; 
void add(int a, int b) {e[idx] = b, ne[idx] = head[a], head[a] = idx++;
}
int n, m;
int main() {memset(head,-1, sizeof head); cin >> n >> m;for (int i = 0; i< m; i++) {int a, b;cin >> a >> b; add(a, b);}return 0;
}
vector<vector<int>> q(1000);
int n, m;
int main() {cin >> n >> m;for (int i = 1; i<= m; i++) {int a, b;cin >> a >> b;q[a].push_back(b);}return 0;
}

http://www.xdnf.cn/news/10598.html

相关文章:

  • 在 Linux 服务器上无需 sudo 权限解压/打包 .7z 的方法(实用命令)
  • 21-CS61B-lab6:java文件操作以及持久化一见
  • BiliNote简介
  • 第100期 DL,多输入多输出通道
  • 学习STC51单片机25(芯片为STC89C52RCRC)
  • edg浏览器打开后默认是360界面
  • 某电子计数跳绳的一次修复经历
  • abandon便签:一个免费好用审美在线的桌面便签应用
  • python打卡day43
  • 【Python序列化】TypeError: Object of type xxx is not JSON serializable问题的解决方案
  • 分词算法BBPE详解和Qwen的应用
  • day 40 python打卡
  • Spring框架学习day6--事务管理
  • 【ISAQB大纲解读】信息隐藏指的是什么
  • 基于Qt的app开发的过渡期
  • PH热榜 | 2025-06-01
  • Flex弹性布局
  • langGraph多Agent
  • 【C语言入门级教学】冒泡排序和指针数组
  • ShardingSphere 分片策略深度解析
  • 导入典籍数据
  • 《仿盒马》app开发技术分享-- 购物车业务逻辑完善(端云一体)
  • java 多线程
  • 基于贝叶斯优化神经网络的光伏功率预测综述
  • Java JVM 内存模型详解
  • LeetCode 付费题157. 用 Read4 读取 N 个字符解题思路
  • deep forest安装及使用教程
  • 强大的PDF编辑工具,操作方便 ,长久使用
  • 第1天:认识RNN及RNN初步实验(预测下一个数字)
  • 【C盘瘦身】Docker安装目录占用C盘过大,一键移动给C盘瘦身