首页 > 其他分享 >邻接矩阵表示法

邻接矩阵表示法

时间:2023-06-23 10:56:02浏览次数:42  
标签:vexnum int 邻接矩阵 表示法 ++ MVnum 顶点

邻接矩阵表示法

使用邻接矩阵创建无向图

需要一个顶点表和邻接矩阵

邻接矩阵的存储结构

image-20230623095921651

采用邻接矩阵建立无向网

  1. 输入总顶点数和总边数。
  2. 输入点的信息存入顶点表中。
  3. 初始化化为邻接矩阵,使每个权值初始化为极大值。
  4. 构造邻接矩阵

image-20230623100607294

算法实现

image-20230623101057571

image-20230623101507611

在图中查找顶点

image-20230623101749765

代码实现

#include <bits/stdc++.h>
#define  MVnum 100
//定义最大值
using namespace std;
typedef pair<int, int> PII;
const int N = 100008;

typedef struct { //邻接矩阵的存储结构
	int vexs[MVnum];//定义一个顶点表
	int arcs[MVnum][MVnum];//定义一个邻接矩阵
	int vexnum, arcnum;

} AMGraph;
int Localevex(AMGraph G, int u) {
	for (int i = 0; i < G.vexnum; i++) {
		if (u == G.vexs[i]) {
			return i;//找到返回下标值,没有找到返回-1
		}
	}
	return -1;
}
/*
  该函数用来建立邻接矩阵
  参数为邻接矩阵的结构类型
 */
void Create(AMGraph& G) {
	cin >> G.vexnum >> G.arcnum; //读入顶点数和边数
	for (int i = 0; i < G.vexnum; i++) {
		cin >> G.vexs[i]; //读入顶点表的值
	}
	for (int i = 0; i < G.vexnum; i++) {
		for (int j = 0; j < G.vexnum; j++) {
			G.arcs[i][j] = 0x3f3f3f3f; //赋值为无穷大
		}
	}
	//构造邻接矩阵
	int v1, v2, w;
	for (int k = 0; k < G.arcnum; k++) {
		cin >> v1 >> v2 >> w;
		int i = Localevex(G, v1);
		int j = Localevex(G, v2); //找到符合下标位置
		G.arcs[i][j] = w; //无向图建立两条边
		G.arcs[j][i] = w; //读入权值


	}


}
int main () {
	AMGraph G;
	Create(G);

	return 0;
}

标签:vexnum,int,邻接矩阵,表示法,++,MVnum,顶点
From: https://www.cnblogs.com/harper886/p/17498839.html

相关文章

  • 图的遍历——DFS, BFS(邻接矩阵,邻接表)——C语言描述
    图的遍历——DFS,BFS(邻接矩阵,邻接表)——C语言描述目录图的遍历——DFS,BFS(邻接矩阵,邻接表)——C语言描述0测试用例框架1图的深度优先遍历(DFS)1.1邻接矩阵(1)数据结构(2)代码(3)测试用例(4)打印结果1.2邻接表(1)数据结构(2)代码(3)测试用例(4)结果2图的广度度优先遍历(BFS)2.1队列(1)数据结构......
  • 2023-06-10:给定一个由 n 个节点组成的网络,用 n x n 个邻接矩阵 graph 表示 在节点网络
    2023-06-10:给定一个由n个节点组成的网络,用nxn个邻接矩阵graph表示在节点网络中,只有当graph[i][j]=1时,节点i能够直接连接到另一个节点j。一些节点initial最初被恶意软件感染。只要两个节点直接连接,且其中至少一个节点受到恶意软件的感染,那么两个节点都将被恶意软件......
  • 2023-06-10:给定一个由 n 个节点组成的网络,用 n x n 个邻接矩阵 graph 表示 在节点网络
    2023-06-10:给定一个由n个节点组成的网络,用nxn个邻接矩阵graph表示在节点网络中,只有当graph[i][j]=1时,节点i能够直接连接到另一个节点j。一些节点initial最初被恶意软件感染。只要两个节点直接连接,且其中至少一个节点受到恶意软件的感染,那么两个节点都将被恶意......
  • 图的邻接矩阵
    #include<stdio.h>#include<stdlib.h>#defineN20#defineTRUE1#defineFALSE0//访问标志数组intvisited[N];//采用数组定义的队列,用于广度搜索typedefstruct{ intdata[N]; intfront,rear;}SqQueue;//图的邻接矩阵表示typedefstruct{ intvexnum,ar......
  • 描述图的两种数据结构 - 邻接表和邻接矩阵
    图的邻接表和邻接矩阵是两种常用的表示图的数据结构,用于描述图中各个顶点之间的连接关系。图是由一组顶点和一组边组成的数据结构,顶点表示图中的对象,边表示对象之间的关系。邻接表和邻接矩阵都可以有效地表示图的结构,并提供了不同的优势和适用场景。邻接表:邻接表是一种链表的......
  • 邻接矩阵的算法设计
    题目描述假设图G采用邻接矩阵存储,分别设计实现以下要求的算法:1.输出每个顶点的入度2.输出每个顶点的出度3.求出度最大的一个顶点,输出其编号4.计算图中出度为0的顶点数5.判断图中是否有边<i,j> 解决思路1.入度是邻接矩阵中第i列的元素之和在函数InDegree()中,我们需要设置一个循环......
  • 将邻接矩阵转化为邻接表
    解决方法邻接表是一种图的表示方式,可以通过链表来表示每个顶点的邻接点集合。将邻接矩阵转化为邻接表,可以先创建一个顶点数组,然后对于每个顶点,将其对应的行或列中非零元素的列或行号(表示相邻的其他顶点)存储到该顶点的链表中。代码实现#include<stdio.h>#include<stdlib.h>#de......
  • ECMAScript6新特性【对象的扩展(属性的简洁表示法) 对象的新增方法 、运算符的扩展 】(
    ......
  • 最小表示法 学习笔记
    描述:给出一个字符串s,将s循环移位若干次之后使得字符串的字典序最小。朴素的思路:对于每一个位置为结果字符串的开头去暴力做。显然最坏复杂度O(|S|^2)于是考虑优化这个过程。假设对于不同的两个下表i和j,如果有s[i,i+1,..,i+k-1]=s[j,j+1,..,j+k-1]和s[i+k]>s[j+k],那这个时候i已......
  • Python实现Json文件转为点表示法(Dot-Notation)
    将Json转换为点表示法有很多用途,本文基于Python实现一个简单demo来转换。【原文见我的博客,如有更新请博客园的不一定及时同步改:https://blog.jfz.me/2023/python-json-to-dot-notation.html】{"vehicle":{"car":{"bmw":true,"audi"......