图的邻接矩阵,邻接表的C语言实现(408真题)

图的邻接矩阵

数据结构定义

#define MAXV 50;//顶点数目的最大值 
typedef struct{int vex[MAX];			//顶点表 int edge[MAXV][MAXV];	//邻接矩阵 int edgeNum,vexNum; 	//图中实际的边数和顶点数 
}MGraph;

初始化

void Matrix_Init(MGraph *Mgraph) {int v1, v2;//存储有边的两个顶点的序号,注意:顶点序号是从1开始printf("请输入顶点数和边数:");scanf("%d%d", &Mgraph->vexNum, &Mgraph->edgeNum);printf("请输入每个顶点的值(一次性输入):");for (int i = 0; i < Mgraph->vexNum; i++){scanf("%d", &Mgraph->vex[i]);}for (int i = 0; i < Mgraph->edgeNum; i++){for (int j = 0; j < Mgraph->edgeNum; j++){	//任意两个顶点之间的边初始化为0,表示现在还没有一条边Mgraph->edge[i][j] = 0;}}for (int i = 0; i < Mgraph->edgeNum; i++){printf("请输入有边相连的两个顶点的序号(输入一对就回车):");scanf("%d%d", &v1, &v2);Mgraph->edge[v1 - 1][v2 - 1] = 1;Mgraph->edge[v2 - 1][v1 - 1] = 1;//因为是无向图,所以该邻接矩阵是对称的}
}

2021年408算法题

题目

//EL路径:图中存在一条路径经过所有边,且每条边都只经过了一次
//算法思想:遍历邻接矩阵,统计**度为奇数的顶点个数**,若有0个或2个这样的顶点,返回1,否则返回0
int IsExistEL(MGraph G){int count = 0; //度为奇数的顶点个数 for(int i = 0; i<G.numVertices; i++){degree = 0;for(int j = 0; j<G.numEdges; j++){degree+= G.Edge[i][j]; //累加顶点的度 }if(degree%2==1){count++; //统计度为奇数的顶点个数  }}if(count == 0 || count == 2){return 1;}else{return 0;} 
}  

2023年408算法题

题目

//算法思想:分别按行按列遍历邻接矩阵,得到顶点的出度和入度,若出度大于入度则输出
int printVertices(MGraph G){int count = 0; //K顶点个数 for(int i = 0; i<G.numVertices; i++){int indegree = 0;int outdegree = 0;for(int j = 0; j<G.numEdges; j++){//统计出度outdegree+=G.Edge[i][j];}fot(int j = 0; j<G.numEdges; j++){//统计入度 indegree+=G.Edge[j]i]; }if(outdegree>indegree){printf("%c",G.VerticesList[i]); count++;}}return count;
}  

邻接表

数据结构定义

#define MAXV 50;//顶点数目的最大值
//邻接表法
typedef struct ArcNode {int adjvex;				 	//弧所指向的顶点的位置//int weight;				//若边有权值 struct ArcNode* nextArc; 	//指向下一条弧的指针
}ArcNode;
typedef struct{int vex;					//顶点的值 ArcNode* firstArc;			//该顶点指向第一条边的指针 
}VertexNode;
typedef struct{VertexNode adjlist[MAXV];	//顶点表 int vexNum, arcNum;			//图中实际的顶点数和边数 
}ALGraph;

初始化

void AdjList_Init(ALGraph &ALgraph) {int v1, v2;//存储有边的两个顶点的序号,注意:顶点序号是从1开始,c语言数组下标从0开始ArcNode *pNew1,*pNew2;//用来创建边结点,因为是无向图,所以创建两个printf("请输入顶点数和边数:");scanf("%d%d", &ALgraph.vexNum, &ALgraph.arcNum);printf("请输入每个顶点的值:");for (int i = 0; i < ALgraph.vexNum; i++){scanf("%d", &ALgraph.adjlist[i].vex);//输入顶点的值ALgraph.adjlist[i].firstArc = NULL;//表示所有顶点之间还没有边相连}for (int i = 0; i < ALgraph.arcNum; i++){printf("请输入有边的两个顶点:");scanf("%d%d", &v1, &v2);pNew1 = (ArcNode*)malloc(sizeof(ArcNode));//创建一个边结点pNew1->adjvex = v2 - 1; //边所指向的顶点的位置(c语言数组下标从0开始)pNew1->nextArc = ALgraph.adjlist[v1 - 1].firstArc; //头插法ALgraph.adjlist[v1 - 1].firstArc = pNew1;//因为是无向图,所以v2顶点的边表也要进行插入pNew2 = (ArcNode*)malloc(sizeof(ArcNode));pNew2->adjvex = v1 - 1; //边所指向的顶点的位置(从0开始的)pNew2->nextArc = ALgraph.adjlist[v2 - 1].firstArc;ALgraph.adjlist[v2 - 1].firstArc = pNew1;}
}

2021年408算法题(邻接表改编版)

定义


算法实现

2023年408算法题(邻接表改编版)

实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/170115.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis key的类型以及命令

系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 第七章 Spring Cloud 之 GateWay 第八章 Sprin…

[AutoSAR 存储] 汽车智能座舱的存储需求

公知及经验整理&#xff0c;原创保护&#xff0c;禁止转载。 专栏 《AutoSAR 存储》 <<<< 返回总目录 <<<< 1 智能座舱的发展&#xff1a; 1.1 发展历史 车辆信息娱乐系统的发展可以分为三个阶段。 机械化阶段 在上世纪90年代&#xff0c;车辆仪表盘…

动手学深度学习(四)---多层感知机

文章目录 一、理论知识1.感知机2.XOR问题3.多层感知机4.多层感知机的从零开始实现 【相关总结】1.torch.randn()2.torch.zeros_like() 一、理论知识 1.感知机 给定输入x,权重w&#xff0c;和偏移b,感知机输出&#xff1a; 2.XOR问题 感知机不能拟合XOR问题&#xff0c;他…

【2023 云栖】阿里云田奇铣:大模型驱动 DataWorks 数据开发治理平台智能化升级

云布道师 本文根据 2023 云栖大会演讲实录整理而成&#xff0c;演讲信息如下&#xff1a; 演讲人&#xff1a;田奇铣 | 阿里云 DataWorks 产品负责人 演讲主题&#xff1a;大模型驱动 DataWorks 数据开发治理平台智能化升级 随着大模型掀起 AI 技术革新浪潮&#xff0c;大数…

2017年8月3日 Go生态洞察:贡献者峰会探秘

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

信息学奥赛一本通1331:【例1-2】后缀表达式的值

1331&#xff1a;【例1-2】后缀表达式的值 时间限制: 10 ms 内存限制: 65536 KB 提交数: 54713 通过数: 13547 【题目描述】 从键盘读入一个后缀表达式&#xff08;字符串&#xff09;&#xff0c;只含有0-9组成的运算数及加&#xff08;&#xff09;、减&#xf…

Flutter开发警告Constructors in ‘@immutable‘ classes should be declared as ‘const‘

文章目录 警告信息报错代码警告原因修改后的代码 警告信息 Flutter开发遇到如下警告 Constructors in ‘immutable’ classes should be declared as ‘const’. 报错代码 class TaskWidget extends StatefulWidget {final String title;final bool isChecked;final int ord…

Java中static、final、static final的区别

文章目录 finalstaticstatic final final final可以修饰&#xff1a;属性&#xff0c;方法&#xff0c;类&#xff0c;局部变量&#xff08;方法中的变量&#xff09; final修饰的属性的初始化可以在编译期&#xff0c;也可以在运行期&#xff0c;初始化后不能被改变。 final修…

案例-某验四代滑块反爬逆向研究二

系列文章目录 第一部分 案例-某验四代滑块反爬逆向研究一 第二部分 案例-某验四代滑块反爬逆向研究二 文章目录 系列文章目录前言一、js文件加载先后顺序二、每次刷新都会初始化 device_id, 所以追栈可以知道它从哪执行的三、删除node中的检测点&#xff08;vm忽视&#xff09…

Cesium-terrain-builder编译入坑详解

本以为编译cesium-terrian-tools编译应该没那么难&#xff0c;不想问题重重&#xff0c;不想后人重蹈覆辙&#xff0c;也记录下点点滴滴。 目前网上存在的cesium代码版本主要有两个分支&#xff1a; 原始网站【不能生成layer文件&#xff0c;且经久不更新&#xff0c;使用gdal…

[PyTorch][chapter 64][强化学习-DQN]

前言&#xff1a; DQN 就是结合了深度学习和强化学习的一种算法&#xff0c;最初是 DeepMind 在 NIPS 2013年提出&#xff0c;它的核心利润包括马尔科夫决策链以及贝尔曼公式。 Q-learning的核心在于Q表格&#xff0c;通过建立Q表格来为行动提供指引&#xff0c;但这适用于状态…

YOLOv5改进 | 添加SE注意力机制 + 更换NMS之EIoU-NMS

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。为提高算法模型在不同环境下的目标识别准确率&#xff0c;提出一种基于改进 YOLOv5 深度学习的识别方法&#xff08;SE-NMS-YOLOv5&#xff09;&#xff0c;该方法融合SE&#xff08;Squeeze-and-Excitation&#xff09;注…

【pytest】Hooks函数之统计测试结果(pytest_terminal_summary)

前言 用例执行完成后&#xff0c;我们希望能获取到执行的结果&#xff0c;这样方便我们快速统计用例的执行情况。 也可以把获取到的结果当成总结报告&#xff0c;发邮件的时候可以先统计测试结果&#xff0c;再加上html的报告。 pytest_terminal_summary 关于TerminalReporter…

Python pandas数据分析

Python pandas数据分析&#xff1a; 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;oracle&#xff0c;尤其…

易错知识点(数学一)

一、反常积分判敛 1、构造使其极限等于一个大于0的常数 1&#xff09;前者通过&#xff1a;化等价无穷小 or 泰勒展开 2&#xff09;若存在p>1使得等式成立&#xff0c;则收敛 考察形式&#xff1a;1、已知收敛&#xff0c;求f(x)中的幂次取值范围 主要思想&#xff1a;比较…

⑧【HyperLoglog】Redis数据类型:HyperLoglog [使用手册]

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ Redis HyperLoglog ⑧Redis HyperLoglog基本操…

基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖(七)

分页查询、删除和修改菜品 1. 菜品分页查询1.1 需求分析和设计1.1.1 产品原型1.1.2 接口设计 1.2 代码开发1.2.1 设计DTO类1.2.2 设计VO类1.2.3 Controller层1.2.4 Service层接口1.2.5 Service层实现类1.2.6 Mapper层 1.3 功能测试1.3.2 前后端联调测试 2. 删除菜品2.1 需求分析…

使用 HTML、CSS 和 JavaScript 创建图像滑块

使用 HTML、CSS 和 JavaScript 创建轮播图 在本文中&#xff0c;我们将讨论如何使用 HTML、CSS 和 JavaScript 构建轮播图。我们将演示两种不同的创建滑块的方法&#xff0c;一种是基于opacity的滑块&#xff0c;另一种是基于transform的。 创建 HTML 我们首先从 HTML 代码开…

yolo系列中的一些评价指标说明

文章目录 一. 混淆矩阵二. 准确度(Accuracy)三. 精确度(Precision)四. 召回率(Recall)五. F1-score六. P-R曲线七. AP八. mAP九. mAP0.5十. mAP[0.5:0.95] 一. 混淆矩阵 TP (True positives)&#xff1a;被正确地划分为正例的个数&#xff0c;即实际为正例且被分类器划分为正例…

Redis-主从与哨兵架构

Jedis使用 Jedis连接代码示例&#xff1a; 1、引入依赖 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.9.0</version> </dependency> 2、访问代码 public class JedisSingleTe…