数据结构——图-有向带权图的邻接表基础

图 - Java实现有向带权图的邻接表表示法 阅读详情

在这里插入图片描述
`

#include <stdio.h>
#include <stdlib.h>
#define VertexType char //顶点的数据类型(char) 
#define VertexMax 20 //最大顶点个数 

typedef struct ArcNode//边表 
{
	int adjvex;//存储的是该顶点在顶点数组即AdjList[]中的位置
	int weight; 
	struct ArcNode *next;
}ArcNode;

typedef struct VNode //单个顶点 
{
	VertexType vertex;
	struct ArcNode *firstarc;
}VNode;

typedef struct //顶点表 
{
	VNode AdjList[VertexMax];//由顶点构成的结构体数组 
	int vexnum,arcnum; //顶点数和边数 
	
}ALGraph;

int LocateVex(ALGraph *G,VertexType v)
{    
    int i;
	for(i=0;i<G->vexnum;i++)
	{
		if(v==G->AdjList[i].vertex)
		{
			return i;
		}
	}
	
	printf("No Such Vertex!\n");
	return -1;
}


void CreateDG(ALGraph *G)
{
	int i,j;
	//1.输入顶点数和边数 
	printf("有向带权图\n"); 
	printf("输入顶点个数和边数:\n");
	printf("顶点数 n="); 
	scanf("%d",&G->vexnum);
	printf("边  数 e="); 
	scanf("%d",&G->arcnum);
	printf("\n\n"); 

	//2.顶点表数据域填值初始化顶点表指针域 
	printf("输入顶点元素(需要用空格隔开):");
	for(i=0;i<G->vexnum;i++)
	{
		scanf(" %c",&G->AdjList[i].vertex);
		G->AdjList[i].firstarc=NULL;
	} 
	printf("\n");
	
	//3.输入边信息构造邻接表 
	int n,m;
	VertexType v1,v2;
	ArcNode *p1,*p2; 
	int value;
	printf("请输入边的信息(需要用空格隔开):\n\n"); 
	for(i=0;i<G->arcnum;i++)
	{   //输入边信息,并确定v1和v2在G中的位置,即顶点在AdjList[]数组中的位置(下标)  
		printf("输入第%d条边信息:",i+1); 
		getchar();
		scanf(" %c %c %d",&v1,&v2,&value);
		n=LocateVex(G,v1);
		m=LocateVex(G,v2);
		
		if(n==-1||m==-1)
		 {
		 	printf("NO This Vertex!\n");
		 	return;
		 } 
		
		p1=(ArcNode *)malloc(sizeof(ArcNode));
		p1->adjvex=m;//填上坐标 
		p1->weight=value;
		p1->next=G->AdjList[n].firstarc;//改链(头插法)  
		G->AdjList[n].firstarc=p1;
	}

} 
void print(ALGraph G)
{
	int i;
	ArcNode *p;
	printf("\n-------------------------------");
	printf("\n图的邻接表表示:\n");
	
	for(i=0;i<G.vexnum;i++)
	{
		
		printf("\n   AdjList[%d]%4c",i,G.AdjList[i].vertex);
		p=G.AdjList[i].firstarc;
		
		while(p!=NULL)
		{
			printf("-->%d权值[%d]",p->adjvex,p->weight);
			p=p->next;
		}
		
	 } 
	 printf("\n");
} 

void InsertVex(ALGraph *G,VertexType v)
{
	
}
int main() 
{
	ALGraph G;
	CreateDG(&G);
	print(G);
	
	return 0;
}
数据结构 图(Graph) 在数据结构中,是一种非常重要的数据结构,用于表示不同的对象之间的关系。 阅读详情

相关推荐

【自己动手写数据结构】 -- 有向带权图的邻接矩阵存储的简单实现

/* * 带权图的邻接矩阵存储实现 * * 当G = 是一个带权图时,G的邻接矩阵中若顶点Vi到顶点Vj * 之间存在边,则将[i,j]赋值为此边的权值;若不存在边,则将[i,j] * 赋值为无穷大;而[i,i]的值为0 */ #include //定义10000为无穷大 #define MAXSIZE 10000 //定义最大的顶点数为30 #define vertexNum 30

"程序猿“的专栏 8422

图 - 存储结构(邻接表)

由于邻接矩阵对于顶点较多,边较少时,但是存储边的二维矩阵是必须预先初始化的,所以会造成空间的浪费。因此可以采取通过链表和数组进行结合的方式(类似于孩子兄弟表示法),用数组存储顶点表,每个顶点记录指向该结点出度边的链头,通过链表存储该边的所有出度,采用头插法进行插入。 #define MaxSize 5 #define INF 100 //邻接表 typedef struct ArcNode{ struct ArcNode* next; int num; }ArcNode; typed.

行云流水 421

simulink可控励磁同步电机模型分析

他励同步电机模型分析

qq_26681609的博客 5551

图论重造-图的存储(邻接表模版)

。

二三两 350

Silvaco Atlas入门指南——从零开始掌握半导体器件仿真

本文为Silvaco Atlas半导体器件仿真软件的入门指南,详细介绍了从零开始掌握该工具的核心流程。内容涵盖Atlas的基本概念、仿真流程、核心文件(输入、结构、输出文件)、交互式与批处理两种操作模式,并逐步演示了如何从定义网格、划分区域、设置电极到进行掺杂、选择物理模型并求解,最终获取和分析器件特性的完整步骤。旨在帮助微电子相关专业人员和工程师快速上手这一强大的“数字实验室”,提升半导体器件设计与研发效率。

weixin_29306317的博客 401

GD32F4系列Keil工程模板搭建全攻略(手把手教学版)

本文提供了一份详细的GD32F4系列Keil工程模板搭建指南。从软件安装、固件库获取、目录规划,到Keil工程创建、文件添加、关键配置(如编译器选项、头文件路径、时钟设置),再到代码定制与常见问题排查,手把手教你构建一个标准化、模块化的开发基础。文章重点介绍了如何利用官方固件库和代码模板,快速建立稳定高效的开发环境,适用于GD32F407等Cortex-M4内核芯片的入门与项目开发。

weixin_29159995的博客 429

数据结构——图-有向带权图的邻接表

#include <stdio.h> #include <stdlib.h> #define VertexType char //顶点的数据类型(char) #define VertexMax 20 //最大顶点个数 typedef struct ArcNode//边表 { int adjvex;//存储的是该顶点在顶点数组即AdjList[]中的位置 int weight; struct ArcNode *next; }ArcNode; typedef s...

qq_50675813的博客 1万+

基于深度学习的活体人脸检测系统:YOLOv5、YOLOv6、YOLOv7、YOLOv8实现与UI界面设计

本博客详细介绍了如何基于YOLOv5、YOLOv6、YOLOv7、YOLOv8模型实现一个完整的活体人脸检测系统。系统包括数据集准备、模型训练、UI界面设计以及实时检测功能的实现。通过YOLO系列模型的应用,我们能够高效、准确地进行人脸检测和活体验证。未来,随着YOLOv9和其他新一代目标检测模型的出现,我们可以进一步提高检测精度和速度。此外,集成更多的传感器数据(如深度传感器、红外线传感器)可以使活体检测系统更加安全和稳定。

YOLO 540

matlab实现图的邻接矩阵转化为邻接表

这里写自定义目录标题调用函数graph一步搞定 调用函数graph一步搞定 %Create a graph using the adjacency matrix.'OmitSelfLoops’忽略对角线, %'upper’指明上三角(即无向图) G = graph(A,‘upper’,‘OmitSelfLoops’); %还可以作图 plot(G); %计算最短路 [Path,distance] ...

Alan_zf的博客 3788

Python 领域 vllm 知识蒸馏的实践经验

知识蒸馏(Knowledge Distillation)是一种将大型、复杂模型(教师模型)的知识转移到小型、高效模型(学生模型)的技术。在大型语言模型(LLM)时代,这项技术变得尤为重要,因为它可以在保持模型性能的同时显著降低计算资源需求。本文专注于在Python生态中使用vLLM(Very Large Language Model)框架实现知识蒸馏的实践经验。vLLM是一个专为大型语言模型设计的高效推理和服务框架,它通过创新的注意力机制和内存管理技术,显著提高了LLM的推理速度。

AI Python 编程之道的博客 777

使用verilog实现基于FPGA的TDC设计

verilog实现TDC 高精度时间数字转换器概述(TDC) 简介: TDC被用于测量时间间隔,应用在物理研究、飞行时间测量领域等。 本设计使用verilog实现并在xilinx和altera的FPGA上均可实现! 设计中使用到下述几个模块,包括FIFO,COUNT等,在xilinx下也使用到了一些原语等。下面有实现的代码和仿真截图等。 顶层模块设计如下: module top( input wire start, input wire stop, input wire clk, output wire T

QQ_778132974的博客 6253

图的十字链表存储法:高效表示有向图与有向带权图

十字链表的概念及定义

m0_68805093的博客 949

异构图中的注意力机制网络:节点级别和语义级别的注意力(Python实现)

在本文中,我们介绍了如何使用Python实现异构图中的节点级别注意力和语义级别注意力。通过语义级别注意力,我们可以根据节点的语义信息对节点进行加权聚合。在本文中,我们将介绍如何使用Python实现异构图中的注意力机制网络,包括节点级别的注意力和语义级别的注意力。最后,我们使用注意力权重对节点特征进行加权聚合,得到聚合后的节点表示。然后,将聚合后的节点表示传递给语义级别注意力模型,根据节点的语义信息进行加权聚合,得到最终的表示。函数中,首先使用节点级别注意力模型对节点特征进行聚合,得到聚合后的节点表示。

HackNebulaZ的博客 485

图的表示与基础操作:邻接矩阵与邻接表的C语言实现

图由顶点集和边集构成,边可以是有向或无向的,且可带有权重。根据图的特性选择合适的存储结构至关重要,这直接影响到图的各种操作(如遍历、查找最短路径等)的效率。本文只对于代码做简单分享,不对代码的逻辑做深层解释,如果读者想知道代码的实现逻辑,请详细阅读代码中的注释部分。

Mrluo386的博客 2547

YOLO与ORB-SLAM3的结合:实现动态环境下的目标检测与视觉SLAM

摘要: 本文介绍如何将YOLOv5目标检测与ORB-SLAM3视觉SLAM系统结合,实现动态环境下的机器人感知与定位。内容包括:源码下载(集成项目YOLO_ORB_SLAM3)、libtorch安装(PyTorch C++支持)、编译配置(解决路径依赖问题)、ROS环境下的部署(Noetic适配),以及使用TUM数据集的测试流程(RGB-D数据关联与运行)。重点解决编译时Torch路径错误、ROS与Anaconda冲突等问题,并展示系统运行效果。该整合方案为动态场景SLAM提供目标检测能力,未来可优化检测模

FJN110的博客 960

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

数据结构之链表、邻接表

写在前面的话: 本菜鸟还是个c++的初学者(上手的是Java),数据结构还没有正式开始学,这些只是我平时闲着无聊自学一些新东西。有高手愿意指出错误,就很感激了。估计没有了,代码写的贼乱,自己都不想看。 链表 动态分配内存、指针实现。 #include<iostream> #include<string> #include<vector> using name...

SongyangJi 832

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

基础数据结构--邻接矩阵和邻接表

邻接矩阵是数学和计算机科学中常用的一种表示方式,用来表述 有向图 或 无向图。一张图由一组顶点(或节点)和一组边组成,用邻接矩阵就能表示这些顶点间存在的边的关系。

E___V___E的博客 1439

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

C语言实现图的邻接表

笔者通过纯C语言实现图的邻接表表示法 (单向有权图) 涉及操作有: 图顶点的 增 删 改 查 图边的 增 删 改 查 打印邻接表 迪杰斯特拉算法 求最短路径(包括中转节点的记录) 部分原理限于篇幅会做介绍,但关键在于自己搜寻资料学习 此博客目的在于分享心得 图的原理构造(篇末源代码也是复现如此结构)如下: 注意:此结构进行过改动,会与部分图书有出入。 因为涉及图顶点(节点)的增删改查,故对顶点的...

M_H_T__的博客 3038

java邻接图_Java数据结构 - 图(邻接表存储)

邻接表相比邻接矩阵,邻接表要更加节省空间。邻接表存储本文将介绍邻接表存储有向带权图。图的例子如下。图介绍一下邻接表上面的图对应的邻接表如下图所示:邻接表前面的数组存储的是所有的顶点,每一个顶点后面连接的块代表前面顶点所指向的顶点和路线的权值。如果该点还指向其他顶点,则继续在块后面添加。例如A指向了B权值是4,那么A后面就加上一块,之后发现A还指向D权值是5,那么就在块尾继续添加一块。其实也就是数组...

weixin_33273250的博客 741

数据结构篇十四:图和图的存储

图 如何理解图? 前面我们学习了线性表,链表,树等基础数据结构,图这种数据结构就是它们的综合利用。我们都知道,图有边和顶点组成,图的知识点比较多,我这里只是简单从数据结构简要分析。 1.图的种类 根据方向:无向图和有向图 根据权值:无权图和有权图 2.图的术语 度:度的概念是针对图的顶点而言的,在无向图中,度表示某个顶点周围有几个顶点与其相连接,在有向图中,分为入度和出度的概念,入度表示该顶点周围多少个点指向自己,出度表示该顶点指向几个点 带权图:就是图中边上面的数据,描述边的附加信息。 联

Dzp199903的博客 1039

数据结构 - 图(邻接矩阵、邻接表)

目录 1、图的概念 2、图的表示方式 1)、邻接矩阵 2)、邻接表 图是除了树之外的另一大类非线性表数据结构,应对到现实生活中有大量的应用,比如微博、微信、QQ等怎么表示其好友关系,关注、被关注(粉丝),亲密度等;地图出行,怎么查询到一个地方的最近距离,这些问题抽象算法都依赖底层的数据结构图。现在除了非关系型数据库、关系型数据库,还有图数据库抽象存储更复杂的现实模型。上面都没有图来的直接,先上图吧. 1、图的概念 树种的节点类比到图中叫顶点(Vertex),如上图中的A;顶...

it_lihongmin的博客 4594

基础数据结构 -- 图

本章主要介绍了图的两种结构。邻接矩阵表示方法:使用一个二维数组,其中行和列代表图中的顶点,矩阵中的元素表示顶点之间的边。适用场景:适合于稠密图,即图中的边数量接近于顶点数量的平方。优点:查询顶点之间是否存在边的时间复杂度为O(1)。缺点:空间复杂度高,为O(V^2),其中V是顶点数量;更新图(添加或删除顶点和边)的成本较高。邻接表表示方法:使用一个列表数组,每个顶点对应一个列表,列表中包含所有与该顶点相邻的顶点。适用场景:适合于稀疏图,即图中的边数量远少于顶点数量的平方。

xiaoyu❅的博客 1269

蛮力法/邻接表 广度优先 有向带权图 无向带权图

代码】蛮力法/邻接表广度优先有向带权图无向带权图。

求道问术 379

数据结构-图

本文简单介绍了数据结构-图

欢迎大家来到我的频道,我是一名数据开发+数据分析方向小鼠鼠,每天都会和大家分享很多知识,希望大家能多多点赞加关注哦。 982

一篇文章帮你弄懂邻接矩阵,邻接表和链式前向星的区别

万字爆肝,十分钟带你了解邻接表,邻接矩阵,链式前向星的本质区别,图文并茂,适合小白(超超超详细!)

欢迎来到“曲终酣兴晚^R”的博客~ 5357

数据结构——图的基础

数据结构图的基础知识,以及其Python与C++实现方式

weixin_51735061的博客 1045
上一篇: 数据结构——图-有向图和无向图的邻接表基础
下一篇: 数据结构——图-有向带权图的邻接表
943802606
博客等级 码龄6年 1万+粉丝 177原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值