用邻接矩阵存储的图的代码实现(创建、遍历以及各种基本操作)(附C++实现代码)

本文介绍了图的定义及其分类,包括有向图和无向图,并强调了连通图和连通分量的概念。重点讨论了使用邻接矩阵来实现图的数据结构,包括创建、遍历、顶点操作、边的增删等基本功能。代码示例展示了如何在C++中实现这些操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、图

图的定义: 图G由两个集合E和V组成,记为G=(V,E),其中V是顶点的有穷非空集合,E是V中顶点偶对的有穷集合,这些顶点偶对称为边。V(G)和E(G)通常用来表示顶点集合和边集合。E(G)可以为空集,如果E(G)为空,说明只有顶点而没有边。

二、 图的分类

1、有向图: 如果E(G)为有向边的集合,则该图就表示为有向图。
2、无向图: 如果E(G)为无向边的集合,则该图就表示为无向图。
有向图的边又称为是弧,例如<x,y>为一条弧,且x为弧尾,y为弧头。

易混淆概念:

1、 路径:路径是指从顶点v到顶点v’的一个顶点序列
2、 路径长度: 路径长度是指一条路径上经过的边或者弧的数目。
3、 简单路径:指的是这条路径不会出现重复的顶点。
4、 简单回路或者简单环:指的是除了第一个顶点和最后一个顶点外,路径上不出现重复的顶点的路径。
5、 连通、连通图以及连通分量

  • 连通:指的是在图中,vi到vj有路径,就说明vi和vj是连通的
  • 连通图:值的是图的任意两个顶点都是连通的,就说明该图是连通的
  • 连通分量:所谓连通分量,指的就是无向图中的极大连通子图
  • 至于啥是极大连通子图 ,以下给出极大连通子图和极小连通子图的定义。
  • 极大连通子图与极小连通子图:
  • 1、极大连通子图,所谓称为极大,意思是加入任意一个不属于图的点集的顶点都会变得不连通。 并且对于连通图而言,就只有一个极大连通子图,就是它自己本身。而非连通图有多个极大连通子图。
  • 2、极小连通子图,所谓是极小,意思是指不能删除其中的任意一条边,如果删除其中的任意一条边都会变得不连通。 极小连通子图其实就是连通图的生成树。也因此极小连通子图只存在于连通图中

如果觉得极大连通子图和极小连通子图的概念解释不够清楚,可以点击这里点击传送

三、图的实现(邻接矩阵的形式以及基本操作的实现)

一、 邻接矩阵
实现代码如下: 代码附详细解释

#include<iostream>
#include<iomanip>//内置输出对齐的函数
#include"Node.h"
using namespace std;

#define MaxVexNum 100//定义最大的顶点数
#define MaxInt de_num
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值