首页 > 其他分享 >链式前向星

链式前向星

时间:2024-08-04 15:42:24浏览次数:6  
标签:nxt cnt int 编号 head 链式 加边 前向星

一种特殊的存边方式

存储结构

int cnt;
struct node{
  int to,nxt,w;
}e[N*2];
int head[N*2];

cnt : 边的编号

e[cnt].to : 边的终点

e[cnt].nxt : 与此边同一起点的下一个边的编号

w : 边权

head[u] : 以u为起点的第一条边的编号

N*2 : 双向建边

(不懂可以往下看看加边代码)

初始化

for(int i=0;i<N*2;i++){
	e[i].nxt=-1;
	head[i]=-1;
}

加边

void add(int u,int v,int w){
	e[cnt].to=v;
	e[cnt].w=w;
	e[cnt].nxt=head[u];
	head[u]=cnt++;
}

这里的加边过程会与上面的定义不符:

e[cnt].nxt : 与此边同一起点的一个边的编号

head[u] : 以u为起点的最后一条边的编号

但正序和倒序对结果并无影响

遍历

for(int i=head[u];~i;i=e[i].nxt){  //遍历节点i的所有儿子  ~i 可写作 i!=1
	if(e[i].to!=father){          //除去父亲
		
	}
}

标签:nxt,cnt,int,编号,head,链式,加边,前向星
From: https://www.cnblogs.com/ZZ-nyn/p/18341758

相关文章

  • 二叉树链式结构代码讲解与实现
    本片将续之前的文章二叉树的概念进行二叉树基本操作的实现,二叉树oj题将在下篇文章讲解。目录a.创建二叉树代码:一、二叉树的遍历1.1前序、中序以及后序遍历代码:如图:(前序遍历递归图解)测试代码:二、节点个数以及高度2.1 二叉树节点个数思想:要求二叉树的总节点个数,左......
  • 数据结构:二叉树(链式结构)
    文章目录1.二叉树的链式结构2.二叉树的创建和实现相关功能2.1创建二叉树2.2二叉树的前,中,后序遍历2.2.1前序遍历2.2.2中序遍历2.2.3后序遍历2.3二叉树节点个数2.4二叉树叶子结点个数2.5二叉树第k层结点个数2.6二叉树的深度/高度2.7二叉树查找值为x的结点2.8......
  • 数据结构——链式二叉树(C语言版)
    链式二叉树的结构⽤链表来表⽰⼀棵⼆叉树,即⽤链来指⽰元素的逻辑关系。通常的⽅法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别⽤来给出该结点左孩⼦和右孩⼦所在的链结点的存储地址。                                ......
  • 实现一个类似c#LINQ链式语法的观察者模式
    文章目录前言一、UniRx与LINQ的关系二、实现原理三、核心代码实现1.接口部分2.Disposable3.主题(事件源)4.操作符5.观察者6.操作符扩展使用示例1.带参数主题2.不带参数主题总结前言最近在学习UniRx的源码,其中链式语法的实现引起了我的兴趣,结合LINQ的实现原理,想要......
  • 数据结构----队列中的链式队列
     目录 链式队列       1.1逻辑结构:线性结构       1.2存储结构:链式存储      1.3链式队列的操作:                        (1)创建一个空的队列                (2)入列     ......
  • 链式前向星
    由链式前向星版本的dfs引入链式前向星:voiddfs(intu,intpre){for(inti=head[u];i;i=edge[i].nxt){intv=edge[i].to;if(v==pre)continue;dfs(v,u);}cout<<u<<"";}for函数结构init:i=head[u]condition:i(i!=0)i......
  • 使用plotly dash的部分链式回调
    我正在尝试使用绘图仪表板中的多个下拉栏来过滤数据。总共有5个下拉选项。我希望前3个独立运行,而后两个应该以双向方式链接到前3个。具体来说,我要实现的功能是:所有值的默认值应该始终是初始起点前3个选项(年、季节和月)应独立运行。例如,可以......
  • 数据结构:线性表的链式表示
    继上文《数据结构:线性表的顺序表示》,我们知道线性表的主要操作如下:InitList(&L):初始化表length(L):求表长LocateElem(L,e):按值查找操作GetElem(L,i):按位查找操作ListInsert(&L,i,e):插入操作ListDelete(&L,i,&e):删除操作PrintList(L):输出操作Empty(L):判空操......
  • 【数据结构与算法】详解二叉树下:实践篇————通过链式结构深入理解并实现二叉树
          ......
  • 8-队列的链式存储结构的操作
    顺序队列的操作#include<stdio.h>#include<stdlib.h>#include<stdbool.h>typedefintElemType;/*链式队列的节点*/typedefstructLinkNode{/*数据域*/ElemTypedata;/*指针域,指向下一个节点*/structLinkNode*next;}LinkNode;/*链式队列*/......