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

构造有向(无向)加权图

邻接表的一般构造

#include<bits/stdc++.h>
#define N 1e4
using namespace std;
typedef struct BP{
int P;//边所指的顶点位置
struct BP *nextB;//指向下一条边的指针
int Q;//储存边的信息
}BP;
typedef struct  DP{
int date;//顶点信息
BP *FirstB;//指向第一条连接该点的边
}DP,lin[N];//构建邻接表类型lin;

int main()
{

return 0;
}

以上步骤些许繁杂,利用STL构建邻接表就方便多了

以下是一vector构建的邻接表

#include<bits/stdc++.h>
#define N 1e4
using namespace std;
typedef struct Node{//构建储存节点信息模块
int Pin;//定点编号
int Quan;//边权值
}Node;
vector<Node>lin[N];

int main()
{
//操作方式:
//顶点u,连接点v,边权值w
int u,v,w;
cin>>u>>v>>w;
Node P;//创建新节点
P.Pin=v,P.Quan=w;
lin[u].push_back(P);

return 0;
}


链式前向星

适合于存储稀疏图,它可以有效地存储图的边和节点信息,以及边的权重

存储的数据结构:

#define N 1e4
typedef struct t{
int to;//边的终点
int w;//边的权值
int next;//指向同一起点的上一条边
}t[N];
int last[N];//邻接表头节点数组
int con=1;//记录第几条边

实现过程

int u,v,w;//u顶点,v被指向点,w边权
cin>>u>>v>>w;
//实现函数
void add(int u,int v,int w)
{
	t[con].to=v;
	t[con].w=w;
	t[con].next=last[con];//采用头插法,新插入的点记录顶点的下一个点
	last[u]=con++;//更新顶点连接的第一个点
	}

以下图为例
在这里插入图片描述

过程演示
初始
last[1]=-1
last[2]=-1
last[3]=-1
last[4]=-1
刚开始没录入连接关系,各点未连接其它点,赋值为-1
cin>>u>>v>>w;
首先输入:1 2 1 //1指向2权值为1;con==1;
last[u]=-1 (last[1]=-1)

t[1].to=2//该边指向点2
t[1].w=1//该边权值为1
t[1].next=last[1]//采用头插法,将该边指向顶点连接的第一条边,由于第一个点还未连接,所以不指向任何点,值仍为-1
(这里是以边指向边来记录的)

last[u]=con++ (last[1]==1 );//更新顶点连接的第一条边,con自增,准备录入第2条边
第二条边和第三条边同样如此
假设第2和3边录入,此时con
4;

输入:1 3 4//1指向3,边权为4
last[u]=-1 (last[1]=1)//刚才顶点1已连接第一条边,所以等于1;

t[4].to=3//该边指向3
t[4].w=4//该边权值为4
t[4].next=last[u]==1//刚才顶点已连接第一条边,所以,第四条边连接第一条边
last[1]=con++//更新顶点信息为顶点连接第四条边

第五条边同上。
在这里插入图片描述
完成数据录入后,数据储存如上图所示


http://www.kler.cn/a/379277.html

相关文章:

  • 科研绘图系列:R语言组合连线图和箱线图(linechart+boxplot)
  • andrular输入框input监听值传递
  • 使用onnxruntime c++ API实现yolov5m视频检测
  • leaflet绘制圆形方案
  • AOSP刷机
  • 线程函数和线程启动的几种不同形式
  • 机器学习算法之回归算法
  • 来康生命科技有限公司心率监测解决方案在健身房与康养机构的应用探索
  • Docker Hub 镜像加速器
  • 鸿蒙Harmony-圆形绘制组件Circle使用详解
  • 基于python的机器学习(一)—— 基础知识(Scikit-learn安装)
  • JVM 类加载器
  • 单调栈--- 分奖金
  • 开源呼叫中心系统 FreeIPCC:WebRTC 详解
  • 贪心算法习题其二【力扣】【算法学习day.18】
  • dns服务部署 作业
  • Docker:网络 Network
  • 探索Python编程:从入门到实践的全面指南
  • 海康威视监控rtsp播放
  • ubantu lnmp
  • 【Android】Activity组件通信
  • 002-Kotlin界面开发之Kotlin旋风之旅
  • Jmeter5.X性能测试
  • 【机器学习】 16. 降维:PCA-主成分分析 Principle Component Analysis
  • Docker部署Portainer CE结合内网穿透实现容器的可视化管理与远程访问
  • Docker配置国内源加速