【链式前向星+存图】讲解

article/2025/10/16 11:56:42

大佬的链式前向星:https://blog.csdn.net/acdreamers/article/details/16902023

【前向星】:

解释一下:

 【前向星和链式前向星的不同】:

 【给出链式前向星的代码实现】:

#include<bits/stdc++.h>
using namespace std;
#define MAXN 100501
struct NODE{int w;int e;int next; //next[i]表示与第i条边同起点的上一条边的储存位置
}edge[MAXN];
int cnt;
int head[MAXN]; 
void add(int u,int v,int w){edge[cnt].w=w;edge[cnt].e=v;    //edge[i]表示第i条边的终点 edge[cnt].next=head[u]; //head[i]表示以i为起点的最后一条边的储存位置 head[u]=cnt++;
}
int main(){memset(head,0,sizeof(head));cnt=1;int n;cin>>n;int a,b,c;while(n--){cin>>a>>b>>c;add(a,b,c);}int start;cin>>start;for(int i=head[start];i!=0;i=edge[i].next)cout<<start<<"->"<<edge[i].e<<" "<<edge[i].w<<endl;return 0;
}

 结果:

【分析一下】:

注意cnt的初值我们初始化为1                  cnt
edge[1].next = head[1] = 0, head[1] = 1,  2 ;
edge[2].next = head[2] = 0, head[2] = 2,  3 ; 
edge[3].next = head[3] = 0, head[3] = 3,  4 ; 
edge[4].next = head[1] = 1, head[1] = 4,  5 ; 
edge[5].next = head[4] = 0, head[4] = 5,  6 ; 
edge[6].next = head[1] = 4, head[1] = 6,  7 ;

模拟:当start=1时,循环变为 for(i = head[1];i!= 0;i = edge[1].next) 通过输出语句将第六条边的终点和权值(就是边的值)输出出来,同时i = edge[6].next = 4(相当于一个链表将第四条边牵出来),然后将第四条边的终点和权值输出,这是i = edge[4].next = head[1] = 1,又将第一条边牵出来,输出第一条边的终点和权值,然后i=0,循环结束,其他类似。 

 【边是倒序遍历的】:

 

贴个链接:点击这里!(好理解的一篇博客)


http://chatgpt.dhexx.cn/article/SGEXdkg4.shtml

相关文章

链式前向星——最完美图解

图的存储方法很多,最常见的除了邻接矩阵、邻接表和边集数组外,还有链式前向星。链式前向星是一种静态链表存储,用边集数组和邻接表相结合,可以快速访问一个顶点的所有邻接点,在算法竞赛中广泛应用。 链式前向星存储包括两种结构: 边集数组:edge[ ],edge[i]表示第i条边…

链式前向星(详解)

链式前向星&#xff08;详解&#xff09; 转自&#xff1a;传送门 我们首先来看一下什么是前向星. 前向星是一种特殊的边集数组,我们把边集数组中的每一条边按照起点从小到大排序,如果起点相同就按照终点从小到大排序, 并记录下以某个点为起点的所有边在数组中的起始位置和…

链式前向星

一 点睛 链式前向星采用了一种静态链表存储方式&#xff0c;将边集数组和邻接表相结合&#xff0c;可以快速访问一个节点的所有邻接点。 链式前向星有如下两种存储结构。 1 边集数组 edge[],edge[i] 表示第 i 条边。 2 头节点数组 head[],head[i] 存储以 i 为起点的第1条边…

深度理解链式前向星

我们首先来看一下什么是前向星. 前向星是一种特殊的边集数组,我们把边集数组中的每一条边按照起点从小到大排序,如果起点相同就按照终点从小到大排序, 并记录下以某个点为起点的所有边在数组中的起始位置和存储长度,那么前向星就构造好了. 用len[i]来记录所有以i为起点的边在数…

链式前向星(超详细)

前向星和链式前向星 链式前向星 添加边的操作 链式前向星&#xff0c;就是以链式结构来储存前向星&#xff0c;每条边就要用结构体&#xff0c;结构体中包含三个数据&#xff1a; Edge[i].to &#xff1a;第i条边的终点 Edge[i].next &#xff1a;与第i条边同一个起点的下…

stm32串口中断的接收

利用串口使得led点亮 利用之前的串口函数加上NVIC的中断函数结构体 定义结构体 定义 配置抢占优先级的组别 配置NVIC串口中断的结构体&#xff1a;中断的通道&#xff0c;配置抢占优先级和子优先级 使能CMD 结构体初始化 还有需要配置中断串口的配置&#xff1a; 串口 接…

STM32串口下载

使用FlyMCU下载程序 1.上电前&#xff0c;设置BOOT01&#xff0c;BOOT10。或者是在上电后&#xff0c;设置BOOT01&#xff0c;BOOT10之后&#xff0c;然后按一下复位按键&#xff0c;从而通过串口下载程序。 2.&#xff0c;在MDK编译加载生成的hex文件&#xff0c;并勾选右边的…

STM32 串口发送乱码问题

STM32 串口发送乱码问题 一、问题状况&#xff1a; 显示为一堆乱码&#xff0c;&#x1f4a2;&#x1f620;&#x1f4a2;晕啊 。 二、解决方法 (通常问题是出在step3:调整外部振荡器默认值) step1:检查时钟树配置 设置晶振为开发板上外部晶振一致的8MHz。 step2:检查波…

STM32串口发送和接收

采用标准库 主控STM32F103C8T6 03代码&#xff1a; #include "main.h" #include "led/led.h" #include "exit/exit.h" #include "uart/uart.h"int main() {NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);InitLED();InitExit();I…

stm32串口控制LED灯

实验要求&#xff1a;电脑串口控制单片机的LED灯 led.c #include "led.h" #include "delay.h" /*初始化led所在口的时钟以及一些输入输出的相关设置*/void Led_Init() {GPIO_InitTypeDef GPIO_Initstructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIO…

stm32串口收发总结

stm32串口的使用过程&#xff1a; 1.使能串口时钟&#xff0c;同时使能串口对应的GPIO的时钟&#xff1b; 2.设置串口引脚的输入输出模式、速率&#xff0c;并初始化GPIO引脚&#xff1b; 3.对于需要接收数据的串口&#xff0c;配置其中断&#xff0c;并使能&#xff1b; 4.设置…

STM32串口发送中断踩坑

今天想测试下Modbus设备&#xff0c;手上暂时没有串口转485的模块&#xff0c;就打算用手上的stm32f042的开发板做个串口转485模块。如下所示 但是软件实际开发过程中&#xff0c;遇到了麻烦。 现象: 在打开串口接收中断时&#xff0c;串口会一直产生除接收中断外的其它中断…

STM32串口下载程序

STM32串口连接及下载程序 一、认识STM321、浅谈STM322、TTL串口与STM3连接 二、下载程序1、HEX文件生成2、烧录软件使用 三、总结四、参考文献 一、认识STM32 1、浅谈STM32 1、STM32型号的说明:以STM32F103RBT6这个型号的芯片为例&#xff0c;该型号的组成为7个部分&#xff…

STM32串口收发处理

STM32串口收发 STM32的串口接收和发送方式都有三种情况&#xff0c;即轮询、中断和DMA&#xff0c;俩俩组合便有9种可能的组合。 下面挑出其中三种收发方式进行研究&#xff0c;以及优缺点比较。 一、中断接收、轮询发送&#xff0c;无缓存模式 1.1 原理 当串口上有字节传送…

STM32 串口通讯及实现

目录 一、串口通讯概述1、广义的串口2、狭义的串口3、串口数据定义4、串口通讯应用 二、STM32串口工程标准库实现1、串口的初始化2、串口数据发送.3、串口的数据接收 一、串口通讯概述 1、广义的串口 广义的串口是针对并口来说的。串口是指设备之间通过一根数据信号线按数据位…

STM32串口配置

目录 串口设置的一般步骤&#xff1a; 1) 串口时钟使能&#xff0c;GPIO 时钟使能 2) 串口复位 3) GPIO 端口模式设置 4) 数据发送与接收 5) 串口状态 6) 使能串口 7) 开启串口响应中断 8.获取相应中断状态 串口设置的一般步骤&#xff1a; 1) 串口时钟使能&#xff0…

STM32串口详解

实验一&#xff1a;简单的利用串口接收中断回调函数实现数据的返回 关于串口调试助手&#xff0c;还应知道&#xff1a; 发送英文字符需要用一个字符即8位&#xff0c;发送汉字需要两个字符即16位&#xff0c;如上图&#xff0c;发送汉字“姜”实际是发送“BD AA”而发送英文字…

stm32串口实验

目录 &#xff08;一&#xff09;STM32 串口简介 (二)软件设计 &#xff08;三&#xff09;效果&#xff1a;​ 1.实现功能&#xff1a;STM32 通过串口和上位机的对话&#xff0c; STM32 在收到上位机发过来的字符串后&#xff0c;原原本本的返回给上位机。 &#xff08;一&…

STM32 串口乱码

问题描述 用正点原子STM32F4探索者开发板调试野火骄阳电机驱动程序&#xff0c;发现串口输出一直是乱码。问题排查&#xff1a; 串口调试助手编码方式&#xff1f;同一个串口调试助手&#xff0c;用正点原子、STM32CubeMX生成的程序发送数据正常。排除串口调试助手问题。串口…

STM32串口通信编程

重庆交通大学信息科学与工程学院 《嵌入式系统基础A》课程 实验报告&#xff08;2&#xff09; 班 级&#xff1a; 物联网工程2002 姓名-学号 &#xff1a; 徐权-632007060327 实验项目名称&#xff1a; STM32串口通信编程 实验项目性质&#xff1a; 设计性 实验所…