考研数据结构——C语言实现无向图邻接矩阵

  1. 首先,定义了一些基本的数据结构和常量:

    • VertexType 和 EdgeType 分别用于表示图中的顶点和边的权重。
    • MAXVEX 定义了图中最大顶点数为100。
    • INFINITY 用于表示顶点之间没有直接的边相连,这里用65535作为无穷大的表示。
  2. 定义了一个图的结构体 MGraph

    • vexs 数组用于存储图中的顶点。
    • arc 数组用于存储图中的边的权重,是一个二维数组,表示邻接矩阵。
    • numNodes 和 numEdges 分别表示图中的顶点数和边数。
  3. CreateMGraph 函数用于创建图:

    • 首先,通过 scanf_s 函数从用户那里获取顶点数和边数。
    • 然后,通过循环读取每个顶点的值。
    • 接着,初始化邻接矩阵,将所有顶点之间的权重设置为 INFINITY,表示它们之间没有直接的边。
    • 之后,通过循环读取每条边的信息,包括边的两个顶点的下标和权重,并将这些信息存储到邻接矩阵中。
    • 如果输入的顶点下标超出了范围,程序会打印错误信息并退出。
  4. PrintMGraph 函数用于打印图的信息:

    • 通过两层嵌套循环遍历邻接矩阵,并打印出每个顶点之间的权重。
    • 如果权重为 INFINITY,则打印出 "∞" 表示这两个顶点之间没有直接的边。
  5. main 函数是程序的入口点:

    • 首先,声明了一个 MGraph 类型的变量 G
    • 然后,调用 CreateMGraph 函数创建图。
    • 最后,调用 PrintMGraph 函数打印图的信息。
#include <stdio.h>
#include <cstdlib>typedef char VertexType;
typedef int EdgeType;
#define MAXVEX 100
#define INFINITY 65535typedef struct {VertexType vexs[MAXVEX];EdgeType arc[MAXVEX][MAXVEX];int numNodes, numEdges;
}MGraph;void CreateMGraph(MGraph* G) {int i, j, k, w;printf("输入顶点数和边数:\n");scanf_s("%d,%d", &G->numNodes, &G->numEdges);for (i = 0; i < G->numNodes; i++)scanf_s(&G->vexs[i]);for (i = 0; i < G->numNodes; i++)for (j = 0; j < G->numNodes; j++)G->arc[i][j] = INFINITY;for (k = 0; k < G->numEdges; k++) {printf("输入边(vi,vj)上的下标i,下标j和权w:\n");scanf_s("%d,%d,%d", &i, &j, &w);if (i < 0 || i >= G->numNodes || j < 0 || j >= G->numNodes) {printf("顶点下标超出范围。\n");exit(EXIT_FAILURE);}G->arc[i][j] = w;G->arc[j][i] = G->arc[i][j];}}void PrintMGraph(MGraph G) {int i, j;printf("图的顶点和边如下:\n");for (i = 0; i < G.numNodes; i++) {for (j = 0; j < G.numNodes; j++) {if (G.arc[i][j] == INFINITY)printf("∞\t");elseprintf("%d\t", G.arc[i][j]);}printf("\n");}
}int main() {MGraph G;CreateMGraph(&G);PrintMGraph(G);return 0;
}

 结果如下:

 

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

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

相关文章

介绍几个AI生成视频的工具

介绍几个AI生成视频的工具&#xff1a; ► Synthesia: Best AI Video Generator - Start Creating FREE AI Videos Now 提供基于 AI 的虚拟演示者&#xff0c;允许用户无需摄像机即可创建专业视频。 ► invideo AI: Turn ideas into videos | AI video creator | invideo AI …

MiniCPM3-4B | 笔记本电脑运行端侧大模型OpenBMB/MiniCPM3-4B-GPTQ-Int4量化版 | PyCharm环境

MiniCPM3-4B&#xff0c;轻松在笔记本电脑上运行大模型&#xff1f; 背景一、选择模型二、模型下载三、模型运行四、总结 背景 2024年9月5日&#xff0c;面壁智能发布了MiniCPM3-4B&#xff0c;面壁的测试结果声称MiniCPM3-4B表现超越 Phi-3.5-mini-instruct 和 GPT-3.5-Turbo-…

Linux 内核的版本控制

Linux 内核的版本控制以及确保模块兼容性是开发和维护 Linux 系统时非常重要的一部分。 Linux 内核采用了语义版本控制&#xff08;Semantic Versioning&#xff09;&#xff0c;通常由三个部分组成&#xff1a; 主版本号&#xff08;major&#xff09;、次版本号&#xff08;m…

leetcode - 分治思想

分治 - 快排 这里快排我们统一使用 数组分三块 和 随机产生基准值的方法实现排序 数组分三块: . - 力扣&#xff08;LeetCode&#xff09; 整个思想即将数组按照基准值分为三个区间 , 具体实现: 三指针实现. 遍历指针 , 左区间右边界指针 , 右区间左边界指针 class Solutio…

卸载完mathtype后,删除word加载项中的mathtype

请参考博客“卸载完mathtype后&#xff0c;word加载项中还是有mathtype的解决方法_怎么删除word加载项里的mathtype-CSDN博客”以及 “安装卸载MathType经验解决MathType DLL找不到的问题——超实用_mathtype dll cannot-CSDN博客” 如果在删除.dotm文件时&#xff0c;删不掉…

随着访问范围的扩大 OpenAI o1-mini 现已向免费用户开放

上周&#xff0c;OpenAI 展示了其最新的大型语言模型&#xff08;LLM&#xff09;–OpenAI o1及其小兄弟 OpenAI o1-mini。该公司在公告中称&#xff0c;Plus 和 Team 用户可在公告发布之日起访问该模型。企业和教育用户将在本周获得该模型&#xff0c;而免费用户最终将获得 o1…

Golang | Leetcode Golang题解之第404题左叶子之和

题目&#xff1a; 题解&#xff1a; func isLeafNode(node *TreeNode) bool {return node.Left nil && node.Right nil }func sumOfLeftLeaves(root *TreeNode) (ans int) {if root nil {return}q : []*TreeNode{root}for len(q) > 0 {node : q[0]q q[1:]if no…

Mac 上,终端如何开启 proxy

前提 确保你的浏览器可以访问 google&#xff0c;就是得先有这个能力 步骤 查看网络的 http/https 还有 socks5 的 port配置 .zshrc 查看 port 点击 wifi 设置 以我的为例&#xff0c;我的 http/https 都是 7890&#xff0c; socks5 是 7891 查看代理的port 以我的软件…

清华团队发布鼻咽癌诊断模型,自动从HE染色图像生成EBER染色图像|文献精析·24-09-18

小罗碎碎念 今天精读的这篇文章于2024年7月22日发表&#xff0c;作者来自清华大学和广西大学。 角色姓名单位名称&#xff08;中文&#xff09;第一作者曾清华大学珠三角研究院医学光学技术研发中心&#xff0c;广州通讯作者何清华大学深圳国际研究生院生物制药与健康工程研究所…

Ubuntu系统入门指南:常用命令详解

Ubuntu系统入门指南&#xff1a;常用命令详解 引言 Ubuntu是一个基于Linux内核的开源操作系统&#xff0c;由Canonical公司和社区共同开发和维护。它以易用性、稳定性和广泛的软件支持而著称&#xff0c;广泛应用于个人电脑、服务器和云计算环境。对于新手来说&#xff0c;掌…

【Django5】django的helloworld

安装django pip install djangoDjango官方中文文档 https://docs.djangoproject.com/zh-hans/5.1/Github链接 https://github.com/django/django创建Django项目 cd到想要创建项目的文件夹下&#xff0c;输入以下命令创建项目 这行代码将会在当前目录下创建一个 mysite 目录 …

算法.图论-并查集上

文章目录 1. 并查集介绍2. 并查集的实现2.1 实现逻辑2.2 isSameSet方法2.3 union方法(小挂大优化)2.4 find方法(路径压缩优化) 3. 并查集模板 1. 并查集介绍 定义&#xff1a; 并查集是一种树型的数据结构&#xff0c;用于处理一些不相交集合的合并及查询问题&#xff08;即所…

linux 解压缩

1、tar命令 # 压缩文件 file1 和目录 dir2 到 test.tar.gz tar -zcvf test.tar.gz file1 dir2 # 解压 test.tar.gz&#xff08;将 c 换成 x 即可&#xff09; tar -zxvf test.tar.gz # 列出压缩文件的内容 tar -ztvf test.tar.gz 释义&#xff1a;-z : 使用 gzip 来压缩和解压…

JavaDS —— 图

图的概念 图是由顶点集合以及顶点之间的关系组成的一种数据结构&#xff1a;G &#xff08;V&#xff0c;E&#xff09; 其中 V 表示的是顶点集合 &#xff1a; V { x | x 属于某个数据对象集} 是有穷非空集合 E 叫做边的集合 &#xff1a; E {(x, y) | x, y 属于 V} 或者 …

Next.js 14 如何在服务端页面中使用客户端渲染组件

在Next.js中&#xff0c;默认就是使用服务端渲染的&#xff0c;那如何在服务端页面中包含客户端组件呢&#xff0c;以下是试例&#xff1a; 在ArticlePage.js中&#xff1a; import DeleteButton from /components/DeleteBtnexport default async function ArticlePage(){retu…

Qt 模型视图(二):模型类QAbstractItemModel

文章目录 Qt 模型视图(二)&#xff1a;模型类QAbstractItemModel1.基本概念1.1.模型的基本结构1.2.模型索引1.3.行号和列号1.4.父项1.5.项的角色1.6.总结 Qt 模型视图(二)&#xff1a;模型类QAbstractItemModel ​ 模型/视图结构是一种将数据存储和界面展示分离的编程方法。模…

Kotlin cancel CoroutineScope.launch的任务后仍运行

Kotlin cancel CoroutineScope.launch的任务后仍运行 import kotlinx.coroutines.*fun main() {runBlocking {val coroutineScope CoroutineScope(Dispatchers.IO)val job coroutineScope.launch {var i 0while (i < Int.MAX_VALUE) {iprintln(i)}}// 2ms 取消协程delay(…

搜索小车运动最短路径python代码实现

一、实验任务 场地中正方格代表障碍物&#xff0c;选取小车运动起点和终点。编程探究小车从起点运动到终点&#xff0c;总共有几种可行的路径&#xff08;路径不含重叠部分&#xff09;&#xff0c;同时找出最短路径并可视化。 二、实验思路 把场地抽象化为69的平面矩阵&…

五种嵌入式中常见网络协议栈

一.LWIP 1.介绍 LwIP&#xff08;Lightweight IP&#xff09;是一个由瑞典计算机科学院&#xff08;Swedish Institute of Computer Science&#xff09;开发的轻量级TCP/IP协议栈&#xff0c;专为资源有限的嵌入式系统而设计。它以其小巧且功能完善的特性&#xff0c;在物联…

Deep Learning-Based Object Pose Estimation:A Comprehensive Survey

论文&#xff1a;https://arxiv.org/pdf/2405.07801v3 项目&#xff1a;https://github.com/CNJianLiu/Awesome-Object-Pose-Estimation 年份&#xff1a;2024 方向&#xff1a;姿态估计 1. 目标姿态估计定义 估计图像中目标相对于相机的姿态&#xff0c; 目标姿态估计是增…