图邻接矩阵创建

图的创建——邻接矩阵 图:是一种较线性表和树更加复杂的数据结构。图中任意两个元素之间都有可能有关系。 数组表示法:用一维数组存放顶点,一个矩阵存放关系(边),再加上顶点数和边数 #define MAX 100 typedef char ElemType; typedef enum{ DG=1,DN,UDG,UDN }GraphKind;//有向图,无向图,有向网,无向网 typedef struct{ in... 阅读详情


   图的邻接矩阵Adjacency Matrix存储方式是用两个数组来表示图,一个一维数组存储中顶点信息,一个二维数组(称为邻接矩阵)存储图中的边或弧的信息。

  设图G有n个顶点,则邻接矩阵是一个n×n的方阵,定义为

设图G是网图,有n个顶点,则邻接矩阵是一个n×n的方阵,定义为

  Wij表示边或者弧上的权值,∞表示计算机允许的、大于所有边上的权值的值,也即是一个不可能的极限值。

  图的邻接矩阵存储的结构代码如下

typedef int Status;	/* Status是函数的类型,其值是函数结果状态代码,如OK等 */
typedef char VertexType; /* 顶点类型应由用户定义  */
typedef int EdgeType; /* 边上的权值类型应由用户定义 */
typedef struct
{
	VertexType vexs[MAXVEX]; /* 顶点表 */
	EdgeType arc[MAXVEX][MAXVEX];/* 邻接矩阵,可看作边表 */
	int numNodes, numEdges; /* 图中当前的顶点数和边数  */
}MGraph;

/* 建立无向网图的邻接矩阵表示 */
void CreateMGraph(MGraph *G)
{
	int i,j,k,w;
	printf("输入顶点数和边数:\n");
	scanf("%d,%d",&G->numNodes,&G->numEdges); /* 输入顶点数和边数 */
	for(i = 0;i <G->numNodes;i++) /* 读入顶点信息,建立顶点表 */
	{
		printf("输入图的顶点\n");
		fflush(stdin);//清空输入缓冲区,为了确保不影响后面的数据读取
		scanf("%c",&G->vexs[i]);
	}
	for(i = 0;i <G->numNodes;i++)
		for(j = 0;j <G->numNodes;j++)
		{
				if(i==j)
					G->arc[i][j]=0;	/* 邻接矩阵初始化 */
				else
					G->arc[i][j]=INFINITY;
		}
	for(k = 0;k <G->numEdges;k++) /* 读入numEdges条边,建立邻接矩阵 */
	{
		printf("输入边(vi,vj)上的下标i,下标j和权w:\n");
		scanf("%d,%d,%d",&i,&j,&w); /* 输入边(vi,vj)上的权w */
		G->arc[i][j]=w; 
		G->arc[j][i]= G->arc[i][j]; /* 因为是无向图,矩阵对称 */
	}
}


打印输出代码如下

void PrintGraph(MGraph *G) 
{
   int i,j;
    printf("Output AdjMatrix:\n");
    printf(" ");
    for(i=0;i<G->numNodes;i++)
    {
	    printf("%c",G->vexs[i]);
	    printf("  ");
	}
	printf("\n");
	for(i=0;i<G->numNodes;i++)
	{
	    printf("%c",G->vexs[i]);
	    for(j=0;j<G->numNodes;j++) 
	    {
		  if(G->arc[i][j]==INFINITY)
			 printf("∞");
		  else
	         printf("%-3d",G->arc[i][j]);
		}
	      printf("\n");
	 }
}


主测试函数为

int main(void)
{    
	MGraph G;    
	CreateMGraph(&G);
    PrintGraph(&G);
	return 0;
}

 

头文件定义代码

#include "stdio.h"    
#include "stdlib.h"   
#include "io.h"  
#include "math.h"  
#include "time.h"

#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXVEX 100 /* 最大顶点数,应由用户定义 */
#define INFINITY 65535



测试结果图为

 

 

本程序为无向图邻接矩阵的创建,有向图只需对程序做些小改动即可


采用邻接矩阵创建图 采用邻接矩阵创建一个有向网N 分析:图的创建主要利用输入的各个顶点,并存储到一个向量(一维数组)中,然后通过输入两个顶点及权重创建弧,利用二维数组表示,因此,利用邻接矩阵创建图的存储需要两个数组:一个一维数组和一个二维数组。#include #include #include #include typedef char VertexType[4]; typedef char InfoPtr; t 阅读详情

相关推荐

数据结构,图的邻接矩阵创建,邻接矩阵与邻接表的交换,两种表的输出,过程用C++实现

/* 编写一个程序algo8-1.cpp,实现不带权图和带权图的邻接矩阵与邻接表的互相 转换算法、输出邻接矩阵与邻接表的算法,并在此基础上设计一个程序exp8-1.cpp 实现如下功能: 1)建立如图有向图G的邻接矩阵,并输出; 2)由有向图G的邻接矩阵产生邻接表,并输出; 3)再由2)邻接表产生对应的邻接矩阵,并输出。 */ #include #define MAX 6 using name

改变生活の代码 1万+

图的建立(邻接矩阵,邻接链表,链式前向星)

常用的建图方式有三种:邻接矩阵,邻接链表(vector建表),链式前向星。做题时我个人常用是邻接矩阵和链式前向星,链式前向星是最灵巧和节约空间的,深受ACMER喜爱。但同时也是三种算法里最难理解的。一旦理解,就是如鱼得水,所以我会着重讲链式前向星。后续图论的题,也推荐大家尽量熟悉和使用链式前向星。

issey的博客 6628

数据结构之图(邻接矩阵创建)

邻接矩阵 邻接矩阵的存储方式是用两个数组表示图。一个一维数组存储图中顶点信息。一个二维数组(邻接矩阵)存储图中的边或弧的信息。 无向图的邻接矩阵 特点: 1、很容易判断任意两个顶点是否有边无边。 2、想要知道某个顶点的度,其实就是这个点点 Vi 在邻接矩阵中第 i 行(或第 i 列)的元素之和。 3、求顶点 V...

爱科比的博客 4161

用邻接矩阵创建图

用一个字符数组vexs[]存储着图的所有顶点,在用一个二维数组arcs[][]存储边的关系,这就是邻接矩阵。另外v表示图的顶点数,e表示图的边数。w表示某条边的权值 对于arcs[i][j]二维数组存储边的关系中,数组的i,j一般都是图的顶点数,即i = j = v;并且例如arcs[i][j] = w 就可以表示为,图存在顶点vexs[i] 到顶点vexs[j]的边,并且权值为w; 另外对于arcs[i][j]随着边的不同可以自行定义其规则。 1.当i = j的时候,arcs[i][j]的权值 2

tanxinji的博客 3471

【创建图的邻接矩阵和邻接表】

1、假设带权有向图采用邻接矩阵存储。设计图的基本运算算法,包括创建图的邻接矩阵,输出图的邻接矩阵,销毁图的邻接矩阵。并用下图进行测试。 2、假设带权有向图采用邻接表存储。设计图的基本运算算法,包括创建图的邻接表,输出图的邻接表,销毁图的邻接表。并用下图进行测试。

xiongIT的博客 4062

基于ARDUINIO的5路红外循迹小车

基于ARDUINIO的5路红外循迹小车 新手抄袭了很多大神的代码。这里表示感谢。 #define STOP 0 #define FORWARD 1 #define BACKWARD 2 #define STURNLEFT 3 #define STURNRIGHT 4 #define TURNLEFT 5 #define TURNRIGHT 6 #define TURNRIGHT90 7 #define TURNLEFT90 8 int leftA_PIN = A0; int

weixin_48214416的博客 4381

采用邻接矩阵建立图

采用邻接矩阵建立图

princekin 2449

高德地图 搜索和点击定位

高德地图vue

weixin_45474673的博客 1943

图的建立——邻接矩阵

通过邻接矩阵的方式建立图 邻接矩阵(Adjacency Matrix)的存储结构就是通过一维数组存储图中顶点的信息,用矩阵表示图中各个顶点的的临界关系,而矩阵通过一个二维数组表示。 图的分类 在矩阵中的表示方法 在无向图中矩阵的表示 无向网中矩阵的表示 存储顶点信息的结构 存储图的信息时,要通过结构体来定义数据类型,以无向网为例定义如下: #define MAX_VEX 100...

ZQYnn's blog 1万+

ERA5获取的风场数据转换为.dfs2文件

ERA5获取风场数据的具体步骤可以参考下面的文章下载好后应该是.nc格式的文件,想要读取或者转换成其他格式的文件可以安装下面步骤,本文介绍如何转换为.dfs2文件。

我的博客 1459

DAC60501与STM32的I2C通信实战:从寄存器配置到电压输出

本文详细介绍了如何使用STM32通过I2C通信驱动DAC60501数模转换器,实现精确的模拟电压输出。内容涵盖从硬件连接到软件模拟I2C驱动编写,再到DAC寄存器配置与电压计算的全流程实战指南,并提供了关键的驱动实例代码和常见问题调试技巧,帮助开发者快速掌握这一嵌入式开发中的实用技能。

weixin_29197835的博客 367

邻接矩阵创建图

邻接矩阵创建图用的二维数组创建图,是用顺序存储结构实现的; 邻接矩阵创建图的过程也就是给二维数组赋值的过程 图的数据结构: public class Graph { String[] vertex = new String[5]; //顶点类型可自定义 int[][] edge = new int[5][5]; //边的类型可自定义 .... //...

欣淡定的博客 4407

智能车竞赛飞檐走壁组赛道制作全攻略:从电磁线铺设到立体元素搭建

本文提供了智能车竞赛飞檐走壁组赛道制作的完整指南。从电磁线选材、电流控制与精准铺设等基础入手,详细解析了垂直墙面、圆筒、跷跷板等核心立体元素的构建技巧与过渡处理。重点分享了确保赛道稳定、符合规则且便于调试的实战经验,帮助参赛队伍搭建可靠的立体赛道,为车模算法调试奠定坚实基础。

weixin_29292535的博客 1281

基于邻接矩阵创建图

基于邻接矩阵创建图

navylhjjlh的博客 1974

OpenClaw Manager Pro - 可视化管理工具

OpenClaw Manager Pro 是一个现代化的 Web 管理界面,用于管理多个 OpenClaw Gateway 实例。🎨美观的界面:深色主题,渐变设计,现代化 UI📡实时监控:WebSocket 实时推送状态和日志🔧完整管理:创建、编辑、删除、启动、停止 Gateway📊多渠道支持:飞书、Telegram、Discord、Slack、微信、钉钉🧩技能管理:可视化配置 61+ 个技能🌍跨平台:支持 macOS、Linux、Windows使用自定义模型系统会自动在中创建},

Maynor的博客 3086

YTM32B1M SDK解析31:软件I2C驱动详解

YTM32B1M微控制器软件I2C驱动解析 本文详细介绍了YTM32B1M微控制器中通过GPIO引脚模拟I2C总线的软件实现方案。核心内容包括: 驱动架构:采用swi2c_config_t配置结构体和swi2c_state_t状态结构体管理I2C参数 功能接口:提供初始化、数据传输(主/从模式)、底层控制等API 应用示例:包含基本配置、EEPROM读写、传感器数据采集、总线扫描等典型应用场景 优化建议:给出引脚选择、时序配置、错误处理等方面的最佳实践 该驱动在硬件I2C资源不足时提供可靠替代方案,支持标准

VehSwHwDeveloper的博客 158

邻接矩阵图的创建及遍历

#include #include #include typedef char VertexType;   //顶点的数据类型 typedef int EdgeType;     //边的权值数据类型 #define MAXVEX 100        //最多的边的数目 #define INFINITY 65535 typedef struct {  int nu

love coding 1695

PCL K4PCS算法实现点云粗配准【2026最新版】

K4PCS算法实现点云粗配准。博客长期更新,本文最近一次更新时间为:2026年5月4日。

点云侠的博客 42万+

python图的创建(邻接矩阵)

在python中的二维矩阵是使用两个列表完成的,该程序完成图的邻接矩阵表示也是使用同样的思想 '''邻接矩阵法完成图的表示''' #创建图,输入图的顶点个数、顶点、以及创建邻接表和存储顶点的数组 class Graph(object): def __init__(self): self._count = int(input('输入图的顶点的个数:')) ...

qq_45061361的博客 1万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【数据结构】图邻接矩阵的创建完整代码

无向图邻接矩阵的创建代码实现完整代码如下程序结果 根据图的定义,邻接矩阵的存储需要对顶点和边分别存储。而图的邻接矩阵表示法是一个用一维数组存储顶点信息,用二维数组存储边(弧)的信息。实现这个算法首先要创建无向图,对图进行初始化操作,其次设置三个函数,分别为打印邻接矩阵,判断是否为对称矩阵和打印顶点的出度和入度。具体实现如下所示。 完整代码如下 #include<stdio.h> #include<malloc.h> #define maxnumber 6//顶点数目最大值 typed

九芒星的博客 7699

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

604C++邻接矩阵创建图及深度、广度遍历

#include "stdafx.h" #include&lt;iostream&gt; #include&lt;queue&gt; //队列库 using namespace std; #define VERTEX_MAX 26 //图的最大顶点数 #define MAXVALUE 32767 //最大值(可设为一个最大整数) typedef struct //定...

我也想当个程序员 525

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

假设带权有向图采用邻接矩阵存储。用图的基本运算算法,包括创建图的邻接矩阵,输出图的邻接矩阵,销毁图的邻接矩阵,求图中顶点的度。

本实验旨在通过设计并实现一个带权有向图的基本运算算法,来加深对图数据结构及其基本操作的理解。实验内容包括创建图的邻接矩阵、输出图的邻接矩阵、销毁图的邻接矩阵以及求图中顶点的度。用图的基本运算算法,包括创建图的邻接矩阵,输出图的邻接矩阵,销毁图的邻接矩阵,求图中顶点的度。实现创建图的函数,根据输入的顶点数、边数和边的权重矩阵初始化图的结构。定义图的数据结构,包括顶点数、边数、顶点数组和边的邻接矩阵。实现求顶点度的函数,分别计算顶点的入度和出度。实现销毁图的函数,释放图所占用的内存空间。

2401_84750595的博客 889

图的创建(详解邻接矩阵和邻接表)

运用邻接矩阵和邻接表两种数据结构来创建图

CXR_XC的博客 7305

用邻接矩阵和邻接表创建图

邻接矩阵 // 创建图邻接矩阵 /* g:初始矩阵 arr:n%3=0表示起点,n%3=1表示终点,n%3=2表示权值 arrLen:表示arr的长度 haveDi:0 表示无向,非0 表示有向 */ void graph_createAdjacencyMatrixByArrWithWeight(int **g, int* arr, int arrLen, int haveDi) { for(int i = 0; i < arrLen; i += 3) { g[arr[

HMT的博客 1091

图的创建(邻接矩阵)

图的创建

ddddcy2023的博客 600
上一篇: 过程
下一篇: 图的邻接表创建输出
daleiff
博客等级 码龄15年 13粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值