c++实现邻接矩阵

C++ 图论之邻接矩阵 邻接矩阵超详细讲解快来瞅瞅吧! 阅读详情
#include<iostream>
using namespace std;

const int MAX = 10; //最大顶点数
//typedef char vertex_type; //顶点类型
//typedef int edge_weight_type; //边上权值类型

template<class vertex_type, class edge_weight_type>
class Graph
{
private:
	int vertex_num; //顶点数
	int edge_num; //边数
	vertex_type vex[MAX]; //存放顶点的数组
	edge_weight_type arc[MAX][MAX]; //邻接矩阵

public:
	Graph(); //构造函数
	//~Graph(); //析构函数
	int locate(char ch); //定位
	void print_graph(); //打印
};


// 定位
template<class vertex_type, class edge_weight_type>
int Graph<vertex_type, edge_weight_type>::locate(char ch)
{
	int i = 0;
	for (i = 0; i < this->vertex_num; i++)
	{
		if (this->vex[i] == ch)
		{
			break;
		}
	}
	return i;
}


//构造函数
template<typename vertex_type, typename edge_weight_type>
Graph<typename vertex_type, typename edge_weight_type>::Graph()
{
	int i = 0, j = 0, k = 0, weight = 0;
	cout << "输入顶点数和边数:" << endl;
	cin >> this->vertex_num >> this->edge_num;

	//存储顶点
	cout << "请输入顶点:" << endl;
	for (i = 0; i < this->vertex_num; i++)
	{
		cin >> this->vex[i];
	}

	//初始化邻接矩阵
	for (i = 0; i < this->vertex_num; i++)
	{
		for (j = 0; j < this->vertex_num; j++)
		{
			this->arc[i][j] = 0;
		}
	}

	cout << "输入两个顶点及其权值:" << endl;
	for (k = 0; k < this->edge_num; k++)
	{
		char first, second;
		cin >> first >> second >> weight;
		i = this->locate(first);
		j = this->locate(second);
		
		this->arc[i][j] = weight;
		this->arc[j][i] = weight;
	}
}

//打印
template<typename vertex_type, typename edge_weight_type>
void Graph<typename vertex_type, typename edge_weight_type>::print_graph()
{
	cout << "邻接矩阵为:" << endl;
	for (int i = 0; i < this->vertex_num; i++)
	{
		for (int j = 0; j < this->vertex_num; j++)
		{
			cout << "\t" << this->arc[i][j];
		}
		cout << endl;
	}
}

int main()
{
	Graph<char, int> g;
	g.print_graph();
	system("pause");
 	return 0;
}
C++ 图结构邻接矩阵简单实现 c++ 图结构邻接矩阵简单实现#ifndef GRAPHMAT_H #define GRAPHMAT_H#include <iostream> using namespace std;#define MAX_VERTEX_NUM 20 //图的最大顶点 #define INF 10000 阅读详情

相关推荐

数据结构C++实现邻接矩阵存储图

定义邻接矩阵存储的图类。 [实验要求] 创建一个邻接矩阵存储的图; 返回图中指定边的权值; 查找图中某顶点的第一个邻接顶点、某顶点关于另一个顶点的下一个邻接顶点序号; 图的深度优先遍历; [截图] 实验例图 操作截图 [实现代码] 一共有三个文件Graph_Martix.h、Graph_Martix.cpp和main.cpp Graph_Martix.h #ifndef _GRA...

Lei Gong's blog 2259

C++实现图—邻接矩阵,邻接表,深度遍历,广度遍历

图的两种实现方式和两种遍历方式,邻接矩阵和邻接表,深度遍历和广度遍历!

终为nullptr 4079

C++邻接矩阵实现有向图、无向图

/*********************邻接矩阵实现无向图******************/ class MatrixUDG { private: char mVexs[MAX];//顶点集合 int mVexBum;//顶点数 int mEdgNum;//边数 int mMatrix[MAX][MAX];//邻接矩阵 char readChar();/

weixin_38044916的博客 4487

c++邻接矩阵的创建

#include #include #include #include #include typedef char vertex[4]; typedef char infor; typedef int vr; #define INF 10000   //定义一个无线大的值 #define max 50    //最大顶点数 typedef enum{dg,dn,ug,u

thoughtspark的博客 1851

图的邻接矩阵表示 DFS 和BFS C++实现

/* * File name : graph.cpp * Function : 图的学习, 邻接矩阵 深度优先遍历和广度优先遍历 C++实现 * Created on : 2016年5月26日 * Author : beijiwei@qq.com * Copyright : 欢迎大家和我一起交流学习,转载请保持源文件的完整性。 任何单位和个人不经本人允许不得用于商

NTSK13 1399

关于token无痛刷新的两个方案

目录方案一方案二 方案一 思路: 后端需要返回一个token过期的时间,在请求发起前拦截每个请求,判断token的有效时间是否已经过期,如果已过期,则暂时将请求挂起,先刷新token后再继续请求。 前期思考: 返回过期时间是为了判断是否过期的,但是如果服务器时间和系统时间不一致呢? 如果同时发起多个请求时怎么办? 实现: 因为是在请求前进行拦截,所以这里用axios的axios.interceptors.request.use()方法 首先,关于服务器时间和系统时间不一致的问题,我的解决方法是:

Yugoup的博客 2718

邻接矩超详解(C/C++)

一、领接矩阵 1.概念 2.分类 3.步骤 4. 邻接矩阵的优缺点 5.代码

莫浅子的博客 1万+

Frida实战:从adb连接到安卓设备参数加密Hook全流程解析

本文详细解析了使用Frida进行安卓应用动态分析的全流程。通过adb连接设备并部署Frida服务端,结合静态分析与动态Hook技术,精准定位并拦截关键函数,特别是针对参数加密等核心逻辑的实时监控与修改,为逆向分析与安全研究提供了高效实战方案。

weixin_29208077的博客 343

C++实现邻接矩阵

邻接矩阵是表示图的一种常见方式,它使用二维数组来描述节点之间的连接关系。函数中,我们创建了一个包含 5 个顶点的图,并添加了一些边。在这个示例中,我们定义了一个。方法用于打印邻接矩阵。方法打印了邻接矩阵。

学IT的细胞膜的博客 645

silvaco例子库学习—mos1ex02

mos1ex02相比于第一个例子,主要进行了mos的输出特性仿真,工艺结构是一样的,所以就只简单讨论一下atlas特性仿真的部分。

weixin_61913839的博客 853

FPGA实战:用DDR3和乒乓操作解决视频帧撕裂问题(附Verilog代码)

本文详细介绍了如何利用DDR3内存和乒乓操作架构解决FPGA视频处理中的帧撕裂问题。通过多帧缓存原理、AXI接口配置和自适应乒乓操作设计,有效隔离读写操作,确保视频流稳定传输。文章包含Verilog代码实现和性能优化技巧,适用于工业相机、医疗影像等高速视频处理场景。

m2n3b4v5c6的博客 290

邻接矩阵实现(有向邻接矩阵)、(无向邻接矩阵) 基于C++

邻接矩阵(注意这里实现的有向邻接矩阵图) 图的邻接矩阵存储方式是用两个数组来表示图。一个一维数组存储图中顶点信息,一个二维数组(邻接矩阵)存储图中的边或弧的信息。 设图G有n个顶点,则邻接矩阵是一个nn的方阵,定义为: 看一个实例,下图左就是一个无向图。 从上面可以看出,无向图的边数组是一个对称矩阵。所谓对称矩阵就是n阶矩阵的元满足aij = aji。即从矩阵的左上角到右下角的主对角线为轴,右上角的元和左下角相对应的元全都是相等的。 从这个矩阵中,很容易知道图中的信息。 (1)要判断任意两顶点

qq_40059236的博客 4488

增益调度控制 —— 理论、案例与交互式 GUI 实现

本文详细介绍了增益调度控制的基本原理、数学模型及公式推导,探讨了该方法在适应非线性系统和大范围工作条件下的优势与局限。通过航空飞行控制、发动机推力控制以及化工过程控制三个典型案例,我们展示了如何利用调度变量动态调整控制增益,从而使得控制系统在各个工作点均能达到优良性能。为帮助工程师和研究者更直观地理解并验证增益调度控制的实际效果,本文提供了一套基于 Python 与 PyQt6 的交互式 GUI 控制系统代码。用户不仅可以实时查看仿真数据,还能通过在线调节参数直观体验调度控制的优势。

闲人编程的博客 1480

c++ 实现邻接矩阵

c++ 实现邻接矩阵 代码如下 #include <iostream> #include<vector> using namespace std; class Graph { public: int vexs[100]; int edges[100][100]; int vex; int edge; Graph() { for (int i = 0; i < 100; i++) { vexs[i] = 0; } for (int i = 0;

qq_45682014的博客 1123

基于 Qt C++ 开发一套西门子量子测量系统的控制与数据采集平台

sensorIdCombo->addItems({"QTS-100-001 (温度)", "QPG-200-001 (压力)", "QDS-300-001 (位移)"});precisionTable->setHorizontalHeaderLabels({"传感器ID", "类型", "标称精度", "实际精度", "校准状态"});QWidget *dispWidget = createSensorWidget("量子位移", "mm (±1μm)", 50.0, 0.001);// 传感器状态更新。

寒寒豆豆软件公司的博客 255

基于深度学习的番茄成熟度检测系统——YOLOv5、YOLOv8、YOLOv10及UI界面的实现

YOLO是一种快速且准确的目标检测模型,近年来,YOLOv5、YOLOv8和YOLOv10作为YOLO系列的重要版本,分别在速度、精度和效率上进行了优化。下面我们简要介绍这些模型。本文介绍了如何基于YOLOv5、YOLOv8和YOLOv10等深度学习模型,结合PyQt5设计一个番茄成熟度检测系统。通过训练模型、优化算法和设计用户友好的界面,我们能够构建一个高效且准确的番茄成熟度检测系统,广泛应用于农业自动化和智能化管理中。

YOLO 1002

邻接矩阵有向图(一) - C++实现

邻接矩阵有向图(二)之 C++详解邻接矩阵有向图是指通过邻接矩阵表示的有向图。上面的图G2包含了"A,B,C,D,E,F,G"共7个顶点,而且包含了",,,,,,,,"共9条边。上图右边的矩阵是G2在内存中的邻接矩阵示意图。A[i][j]=1表示第i个顶点到第j个顶点是一条边,A[i][j]=0则表示不是一条边;而A[i][j]表示的是第i行第j列的值;例如,A[1,2]=1,表示第1个顶点(即顶点B)到第2个顶点(C......

生活需要深度 3464

CUDA:实现使用cuSolverSP底层API实现Cholesky因式分解(附完整源码)

CUDA:实现使用cuSolverSP底层API实现Cholesky因式分解(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 346

图的邻接矩阵存储法详解与C++实现

邻接矩阵法存储图,以及对图的基本操作的C/C++代码实现

m0_68805093的博客 2367

精雕软件(JDpaint) 5.5 绿色版

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

ssm框架搭建

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

C++实现图的邻接矩阵

代码: #include &amp;amp;lt;iostream&amp;amp;gt; #include&amp;amp;lt;vector&amp;amp;gt; using namespace std; typedef int T; //顶点的值类型 int, char, double and so on struct Node { T value; //...

weixin_43011522的博客 2428

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

C/C++实现图的邻接矩阵

图的存储:邻接矩阵   代码 #include <iostream> #include <stdlib.h> #define MaxVertexNum 100 using namespace std; typedef char VertexType; typedef int EdgeType; typedef struct{ VertexType Vex[MaxVertexNum];//顶点表 EdgeType Edge[MaxVertexNum][MaxVer

weixin_44915226的博客 1984

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

邻接矩阵无向图(二) - C++实现

邻接矩阵无向图是指通过邻接矩阵表示的无向图。正在上传…重新上传取消上面的图G1包含了"A,B,C,D,E,F,G"共7个顶点,而且包含了"(A,C),(A,D),(A,F),(B,C),(C,D),(E,G),(F,G)"共7条边。由于这是无向图,所以边(A,C)和边(C,A)是同一条边;这里列举边时,是按照字母先后顺序列举的。上图右边的矩阵是G1在内存中的邻接矩阵示意图。A[i][j]=1表示第i个顶点与第j个顶点是邻接点,A[i][j]=0则表示它们不是邻接点;而A[i][j]表示的是第i行第j列的值;

生活需要深度 3343

图的邻接矩阵表示的C++类实现

任何的抽象数据类型(Abstract Data Type)都由3要素组成,名称、数据对象集合操作集。对于图的数据结构,其名称为Graph(图),数据对象集由一个非空的有限顶点集合和一个有限边集合组成,操作集包括插入顶点、插入边等。教材上对于图的实现形式主要介绍了两种:邻接矩阵和邻接表,本文采用临街矩阵的表示图,初步实现简单的图类,可以进行创建图、插入边、打印图等操作。 //graphadjcen

Alex123980的博客 5704

数据结构 C++实现 有向图的邻接矩阵存储

文章目录实验目的实验内容代码内容运行结果总结 实验目的 1.掌握图的基本存储方法。 2.掌握有关图的操作算法并用高级语言实现。 3.掌握图的有关应用。 实验内容 1、建立有向图的邻接矩阵存储并完成以下工作: (1)、输出该邻接矩阵; (2)、求出第i个顶点的出度并输出; (3)、求出第i个顶点的入度并输出; 代码内容 #include<iostream> #define Max 327 //表示极大值,代表无穷大 #define MVNum 100 //最大顶点数 #define OK 1;

qq_54388490的博客 7928

图论基础与C++实现:从概念到邻接矩阵与邻接表

在计算机科学与算法设计中,图是一种极其重要的数据结构,它不仅是学术研究中的核心概念,也是工程实践中解决复杂问题的利器。无论是社交网络的关系分析、地图导航的路径规划,还是网络通信中的路由算法,图结构都扮演着至关重要的角色。本文将从图的基本概念入手,介绍有向图、无向图的区别,深入探讨两种常用的存储方式——邻接矩阵与邻接表,并结合 C++ 给出详细实现代码,让你在理解原理的同时,也能快速上手编程实践。如果边带有权值,并且两个节点之间是连通的,上图中的边的关系就用权值代替,如果两个。的路径,则称此图是强连通图。

2302_79376097的博客 1056
上一篇: c++实现哈夫曼编码
下一篇: c++实现邻接表
黄色猴子
博客等级 码龄7年 87粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值