无向图的邻接矩阵基本操作

无向图邻接表改为邻接矩阵 #include #include #include int a[100][100];//邻接矩阵的载体 typedef struct ArcNode{ int adjvex; struct ArcNode *nextarc; }ArcNode; //表结点 typedef struct VNode{ char data; ArcNode *firstarc; }VNod 阅读详情

首先声明定义之后会用到的宏

typedef char     VertexType;
typedef int      EdgeType;
#define INF      65535
#define MAXVEX   100
bool visited[MAXVEX];

邻接矩阵存储结构

typedef struct MGraph
{
    VertexType vexs[MAXVEX];
    EdgeType arc[MAXVEX][MAXVEX];
    int vertexs_num, edges_num;
} MGraph;

创建初始化图

void create_mgraph(MGraph *G)
{
    cin >> G->vertexs_num >> G->edges_num;
    for(int i = 0; i < G->vertexs_num; ++ i)
        cin >> G->vexs[i];
    for(int i = 0; i < G->edges_num; ++ i)
        for(int j = 0; j < G->edges_num; ++ j)
            G->arc[i][j] = INF;
    for(int i = 0; i < G->edges_num; ++ i)
    {
        int x, y, v;
        cin >> x >> y >> v;
        G->arc[x][y] = v;
        G->arc[y][x] = v;
    }
}

邻接矩阵的无向图的递归的深度优先遍历

void DFS(const MGraph *G, int i)
{
    visited[i] = true;
    cout << G->vexs[i] << " ";
    for(int j = 0; j < G->vertexs_num; ++ j)
        if(G->arc[i][j] == 1 && !visited[j])
            DFS(G, j);
}
void DFS_Traverse(const MGraph *G)
{
    for(int i = 0; i < G->vertexs_num; ++ i)
        visited[i] = false;
    for(int i = 0; i < G->vertexs_num; ++ i)
        if(!visited[i])
            DFS(G, i);
}

邻接矩阵的无向图的广度优先遍历

void BFSTraverse(MGraph *G)
{
    queue<int> Q;
    for(int i = 0; i < G->vertexs_num; ++ i)
        visited[i] = false;
    for(int i = 0; i < G->vertexs_num; ++ i) {
        if(!visited[i]) {
            visited[i] = true;
            cout << G->vexs[i] << " ";
            Q.push(i);
            while(!Q.empty()) {
                int k = Q.front();
                Q.pop();
                for(int j = 0; j < G->vertexs_num; ++ j) {
                    if(G->arc[k][j] == 1 && !visited[j])
                    {
                        visited[j] = true;
                        cout << G->vexs[j] << " ";
                        Q.push(j);
                    }
                }
            }
        }
    }
}

测试

int main()
{
/*
5 6
A B C D E
0 1 1
1 2 1
0 4 1
2 4 1
0 3 1
2 3 1
*/
    MGraph *G = new MGraph;
    create_mgraph(G);
    DFS_Traverse(G);
    cout << endl;
    BFSTraverse(G);
    cout << endl;   
    system("pause");
    return 0;
}
邻接矩阵实现无权无向图、带权无向图 java 无权无向图、带权无向图的实现 java 邻接矩阵实现无权无向图、带权无向图 java 1.图的接口 import java.util.List; public interface Graph { public int getSize(); //返回图中的顶点数 public List getVertices(); //返回图形中的顶点 public V ge... 阅读详情

相关推荐

数据结构第六章(二)-图的存储及基本操作

就是用矩阵来表示图,其中图的顶点有几个就是有几行几列,所以这是个方阵。那矩阵里面的值是什么呢?如果它没有权,那就用1、0表示有没有边,还是得看图,比如下面这个图,第一行第二列是1,就代表A到B有边,无向图A到B有边说明B到A也有边,所以第二行第一列也是1(所以无向图的邻接矩阵是个对称矩阵),有向图就不是,比如有向图的邻接矩阵第二行第一列就不是1,表示B到A是没边的。现在我们知道了邻接矩阵大概是怎么个意思,就是把图的顶点和边存储起来用矩阵来表示,那么我们的数据结构是什么样的呢?100//顶点数目的最大值。

weixin_45270383的博客 1231

使用邻接矩阵表示法创建无向图以及部分操作

#include &lt;iostream&gt; using namespace std; //图的邻接矩阵存储表示 #define MaxInt 32767 #define MVNum 100 typedef struct { char vexs[MVNum]; int arcs [MVNum][MVNum]; int vexnum,arcnum; }AMGraph;...

Carlos的博客 6859

无向网的邻接矩阵存储

有关无向网的邻接矩阵存储,用C语言编写,详细代码。

数据结构-使用邻接矩阵创建无向图

1.邻接矩阵 邻接矩阵(Adjacency Matrix)是表示顶点之间相邻关系的矩阵。 2.程序分析 W i,j表示边上的权值;∞表示计算机允许的,大于所有边权值的数。 用邻接矩阵表示法表示图,除了用一个存储邻接矩阵的二维数组外,还需要用一个一维数组来存储顶点信息。 //采用邻接矩阵表示法创建无向网 #include <iostream> using namespace std; #define MaxInt 32767 //表示极大值,即∞ #de

晨钟暮鼓林中径,晚风花间寺中人 2万+

路径规划:D*Lite寻路算法详解

D*Lite详解目录

mkr67n的博客 2万+

STM32F407与AD7766实战:如何用SPI+DMA实现高速ADC数据采集(附完整代码)

本文详细介绍了如何利用STM32F407的SPI接口与DMA控制器,高效稳定地驱动24位高精度ADC芯片AD7766,实现高速连续数据采集。通过对比传统中断方式的瓶颈,阐述了SPI+DMA方案如何大幅降低CPU负载,并提供了从硬件设计、CubeMX配置到核心驱动代码的完整实战指南,帮助工程师解决高速ADC数据采集中的性能难题。

weixin_29281941的博客 185

无向图的邻接矩阵

无向图的邻接矩阵的定义、表示法、度

m0_63724626的博客 1万+

第四节、C# 上位机面向对象编程详解(工控硬件继承实战版)

继承核心价值:在 C# 上位机工控开发中,继承的核心是通用逻辑复用与接口统一,将所有硬件的通用属性 / 方法封装到抽象基类,子类只需实现独有逻辑,大幅减少冗余代码。基类设计要点:优先使用抽象基类,合理分配访问修饰符(privateprotectedpublic),定义通用事件与虚方法,提供资源释放机制,兼顾复用性与扩展性。子类设计要点:通过: base()调用基类构造函数,强制实现抽象方法(保证接口统一),选择性重写虚方法(实现独有逻辑),复用基类的protected成员。多设备管理。

kylezhao2019的博客 784

邻接矩阵—图的存储结构

文章目录邻接矩阵1、邻接矩阵表示法2、无向图的邻接矩阵表示法3、有向图的邻接矩阵表示法4、网(有权图)的邻接矩阵表示法5、邻接矩阵的存储表示6、采用邻接矩阵表示法创建无向网7、邻接矩阵优点和缺点 图没有顺序存储结构,但可以借助二维数组来表示元素之间的关系,即邻接矩阵表示法 图的链式存储结构有多种,邻接表、十字链表、邻接多重表 邻接矩阵、邻接表是我们重点要研究的 邻接矩阵 1、邻接矩阵表示法 建立...

wmy0217_的博客 1万+

微波射频学习笔记18-------偶极子天线和微波天线设计介绍

几种天线设计方法的介绍 一、偶极子天线 1.天线模型 两根紧挨着的金属导体,长度均为四分之一波长,直径均远小于波长,两导体间距也远小于波长。 2.天线性能的设计因素 ① 单个导体长度L:(光速/频率)/4=四分之一波长(在空气中传播的波长),但在导体中传播,波长会变短; ② 导体半径R:远小于波长即可,使用导电率高些的材料,市面上常见直径零点几毫米就挺好,或者用波长/200,得出一个小200的值,也算远小于波长; ③ 两导体间距S:远小于波长即可,可以比半径更小点。 以上三个变量L、R、S,均可在仿真软件

Sil_sprout 1万+

STM32H743VIT6最小系统板PCB设计全流程(AD09实战教程+封装库分享)

本文详细介绍了基于STM32H743VIT6高性能MCU的最小系统板PCB设计全流程。内容涵盖从项目规划、原理图设计到PCB布局布线的AD09实战操作,重点解析了高速电路设计中的电源、时钟、去耦等关键模块的处理要点与常见陷阱,并分享了经过验证的封装库资源,旨在为工程师提供一套完整、可靠的设计方法与实战参考。

weixin_29194693的博客 118

无向图加权邻接矩阵怎么存储_学习数据结构--第五章:图(图的基本操作)

第五章:图(图的基本操作)1.Adjacent(G,x,y)Adjacent(G,x,y) 判断图G是否存在边或(x,y)如上 无向图 的邻接矩阵和邻接表表示方法,判断方法分别为:邻接矩阵:判断该边是否存在直接判断对应邻接矩阵中的值即可,如果是1存在否则不存在邻接表:判断对应顶点的边表是否存在这样一条边的边表结点因为无向图的邻接矩阵和邻接表我们会存储两遍,所以无论第一个结点x做行号,还是y做行号都...

weixin_29911569的博客 478

Unity IAP插件实战:从零搭建Google Play内购系统

本文详细介绍了如何使用Unity IAP插件从零搭建Google Play内购系统,涵盖环境准备、双端配置、核心API实现及常见问题排查。通过实战代码示例,帮助开发者快速掌握跨平台内购功能开发,提升手游商业化效率。

weixin_28692867的博客 430

数据结构之无向图基本操作(采用邻接矩阵存储)—整理严蔚敏数据结构

//无向图的邻接表存储实现图的基本操作 #include using namespace std; #define MAXVEX 100 typedef char VexType; typedef struct ArcNode { int adjvex; ArcNode *pNextArc; }ArcNode; typedef struct VexNode { VexType data;

EditGP的专栏 6265

Sony SLVS-EC接口实战:如何用Xilinx K7 FPGA接收IMX421传感器数据(附电气特性匹配技巧)

本文详细介绍了在Xilinx Kintex-7 FPGA平台上实现Sony IMX421图像传感器SLVS-EC接口数据接收的完整实战方案。内容涵盖从硬件选型、PCB布局的电气特性匹配技巧,到FPGA内部GTX收发器配置、多通道绑定以及SLVS-EC协议数据解析与图像重组的关键步骤,为高速视觉系统开发提供了宝贵的调试经验和系统集成指导。

efc12345678的博客 261

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

邻接矩阵(图)基本操作:建立无向图、有向图 代码实现(C语言)

邻接矩阵存储结构: 创建无向图、有向图: #include<stdio.h> #include<stdlib.h> #define MaxVexNum 100 #define MaxInt 32767 //邻接矩阵 typedef int VertexType; typedef int EdgeType; typedef struct AMGraph{ Verte...

知且行的博客 6815

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【数据结构】无向图基本操作:手动输入邻接矩阵;文件读取邻接矩阵;手动输入邻接表

图的相关概念和术语如下:图:由顶点的有穷非空集合与边的集合组成。表示由顶点集合和边集合组成的无向图。顶点(Vertex):图中的一个节点。边(Edge):连接两个顶点的线段。无向图(Undirected Graph):边没有方向的图。有向图(Directed Graph):边有方向的图。加权图(Weighted Graph):边带有权值的图。多重图(Multigraph):两个顶点之间可以有多条边的图。度(Degree):与一个顶点相连的边的条数。

2301_76172693的博客 1510

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

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

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

无向图G的邻接矩阵法和邻接表法以及遍历输出无向图G包括两种存储的FirstNeighbor和NextNeighbor两种基本操作

无向图G的邻接矩阵法和邻接表法以及遍历输出无向图G包括两种存储的FirstNeighbor和NextNeighbor两种基本操作

m0_75220252的博客 3971

无向图-基本操作函数(建立,广度遍历,深度遍历,邻接矩阵表示)

主要函数: 基本操作函数: InitGraph(Graph &amp;G)             初始化函数 参数:图G 作用:初始化图的顶点表,邻接矩阵等 InsertNode(Graph &amp;G,VexType v) 插入点函数 参数:图G,顶点v 作用:在图G中插入顶点v,即改变顶点表 InsertEdge(Graph &amp;G,VexType v,VexType w) 插入...

关注网络安全、云原生安全 7595

C语言数据结构-图-邻接矩阵-试在邻接矩阵存储结构上实现图的基本操作 matrix_insert_vertex 和matrix_insert_arc

邻接矩阵 试在邻接矩阵存储结构上实现图的基本操作 matrix_insert_vertex 和matrix_insert_arc,相关定义如下: typedef int VertexType; typedef enum{ DG, UDG }GraphType; typedef struct{ VertexType vertex[MAX_VERTEX_NUM]; //顶点向量 int arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; //邻接矩阵

aiqq136的博客 2859

图的邻接矩阵表示及其基本操作

图的邻接矩阵表示及其基本操作 文章目录图的邻接矩阵表示及其基本操作1.邻接矩阵 1.邻接矩阵 表示图的一种简单方式是使用二维数组,称为邻接矩阵表示法。图中的每条边(v, w),设置A[v][w]=1;若不存在边(v, w),则A[v][w] = 0;如果边上带权值,那么可以设置A[v][w]等于该权值,同时使用一个很大或者很小的权值来表示不存在的边。如图,展示了无向图、有向图、有向网和它们的邻接矩阵。 邻接矩阵是一种顺序结构,从邻接矩阵的行数或者列数可知图的顶点数。无向图的邻接矩阵总是对称的,但有向图的邻

hellolde的博客 1万+

数据结构笔记——图的基本操作

目录 一、基本操作 1.Adjacent(G,x,y):判断图G是否存在边或(x,y),y> 2.Neighbors(G,x):列出图G中与结点x邻接的边 3.InsertVertex(G,x),在图G中插入顶点x 4.DeleteVertex(G,x),从图G中删除顶点x 5.AddEdge(G,x,y):若无向边(x,y)或有向边不存在,则向图G中添加该边,y> 6.RemoveEdge(G,x,y):若无向边(x,y)或有向边存在,则从图G中删除该边,y> 7.Fir

晓风岚月 2640

数据结构与算法 —— 图 (Graph)的基本介绍

目录图的定义有向图和无向图图的概念图的存储图的基本操作图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E)- G表示一个图,- V(Vertex)表示顶点的有穷非空集合,- E表示图中边(Edge)的集合。

‘’ 1884

数据结构—邻接矩阵存储法代码实现

邻接矩阵法 无向图 #include<stdio.h> #define MaxVertenNum 6 //顶点数目的最大值 typedef char VertexType; //顶点的数据类型 typedef int EdgeType; //存放顶点信息 typedef struct { VertexType Vex[MaxVertenNum]; //顶点表 EdgeType Edge[MaxVertenNum][MaxVertenNum]; //邻接矩阵 int vexnum, edge

Miss Z的博客 2939

java用邻接矩阵实现图

package Graph; //无向不带权重图 public class AdjacencyMatrixGraph { private int verticesNumber; //结点数量 private int edgesNumber; //边数量 private int[][] adjacency; //邻接矩阵 //存在边时为1,不存在时为0 ...

weixin_44632459的博客 561
上一篇: 二叉树的非递归前序、后序遍历
下一篇: 链式存储无向图的基本操作
菜鸟502
博客等级 码龄16年 49粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值