首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

邻接矩阵存储结构

邻接矩阵存储结构 一、知识框架 二、存储方式(这里只讨论邻接矩阵存储方式) 在邻接矩阵存储结构中,顶点信息使用一维数组存储,边信息邻接矩阵使用二维数组存储。...无向和其对应邻接矩阵 有向 三、代码实现 1.头文件AdjMGraph.h 针对是下面这个有向 #pragma once //邻接矩阵存储结构 #include "SeqList.h...numOfEdges; //边条数 }AdjMGraph; //结构体定义 //初始化 void Initiate(AdjMGraph *G, int n)...,就是邻接矩阵顶点v行中 从第一个矩阵元素开始非0且非无穷大顶点 */ int GetFirstVex(AdjMGraph G, int v) //在G中寻找序号为v顶点第一个邻接顶点 //...,顶点v1邻接顶点v2下一个邻接顶点,就是邻接矩阵顶点 v行中从第v2+1个矩阵元素开始非0且非无穷大顶点 */ int GetNextVex(AdjMGraph G, int v1, int

59870
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    遍历(上)——邻接矩阵表示

    概述 作为数据结构书中较为复杂数据结构,对于存储方式分邻接矩阵和邻接表两种方式。在这篇博客中,主要讲述邻接矩阵深度优先遍历(DFS)与广度优先遍历(BFS)。...---- 广度优先遍历(BFS) BFS 算法思想是:对一个无向连通,在访问图中某一起始顶点 v 后,由 v 出发,依次访问 v 所有未访问过邻接顶点 w1, w2, w3, …wt;然后再顺序访问...,DFS搜索,直至图中所有与v0路径相通顶点都被访问。...3)若该图为非连通,则图中一定还存在未被访问顶点,选取该顶点为起点,重复上述DFS过程,直至图中全部顶点均被访问过为止。...stack.push(i); this->isvisited[i] = 1; } } } } ---- 例子 下面的程序所基于结构够如下

    95220

    数据结构 邻接矩阵

    大家好,又见面了,我是你们朋友全栈君。 邻接矩阵存储方式是用两个数组来实现,一个一维数组存储顶点信息,一个二维数组存储线(无向)或弧(有向信息。...设G有n个顶点,则邻接矩阵是一个n × n方阵,定义为: 无向邻接矩阵,两个顶点有边则为1,否则,为0;因为是无向arc[i][j] = arc[j][i],所以矩阵为对称矩阵,对角线为自己到自己边...设G有是网,有n个顶点,则邻接矩阵是一个n × n方阵,定义为: 无向网和无向差不多,就是加了权值,两个顶点之间无边的话距离是∞。 如果是有向邻接矩阵就不是对称矩阵了。...下面是邻接矩阵存储结构: #define MAXVERTEX 100 //最大顶点数 #define INFINITY 32767 //用有符号int最大值表示无穷大 typedef char...vertextype; //定义定点存储信息为字符型 typedef int arctype; //定义边权值为int型 //邻接矩阵存储结构 typedef struct {

    63010

    【数据结构】邻接矩阵存储及度计算

    题目描述 假设邻接矩阵存储。...输入顶点信息和边信息,完成邻接矩阵设置,并计算各顶点入度、出度和度,并输出图中孤立点(度为0顶点) --程序要求-- 若使用C++只能include一个头文件iostream;若使用C语言只能...—有向,U—无向) 顶点信息 边数 每行一条边(顶点1 顶点2)或弧(弧尾 弧头)信息 输出 每组测试数据输出如下信息(具体输出格式见样例): 邻接矩阵 按顶点信息输出各顶点度(无向)或各顶点出度...孤立点度信息不输出。 孤立点。若没有孤立点,不输出任何信息。...outdegree[GetIndex(tail)]++;             indegree[GetIndex(head)]++; 然后如果是无向的话,需要对称建立邻接矩阵

    27530

    C++ 不知系列之基于邻接矩阵实现广度、深度搜索

    适合描述更复杂多对多数据结构,如群体社交关系、城市交通路线…… 本文将讨论以邻接矩阵方式存储,并在此基础之上对进行深度、广度搜索。 2....如上结构可以描述如下: # 5 个顶点 V={A0,B1,C2,D3,E4} # 7 条边 E={ (A0,B1,3),(B1,C2,4),(C2,D3,6),(C2,E4,1),(D3,E4,2)...findPath( fv,tv):查找从一个顶点到另一个顶点之间路径。 …… 3. 存储 ---- 存储实现主流有 2 种:邻接矩阵和链接表,本文主要介绍邻接矩阵。...邻接矩阵适合表示关系复杂结构,如互联网上网页之间链接、社交圈中人与人之间社会关系…… 3.2 编码实现邻接矩阵 ---- 3.2.1 基本函数 ---- 因顶点本身有数据含义,需要先定义顶点类型...使用广度和深度搜索遍历时,最后搜索到结点顺序是不相同: 广度遍历顺序:A1->B2->D4->C3->E5。 深度遍历顺序:A1->D4->E5->B2->C3。

    1.2K20

    数据结构:存储结构之邻接矩阵

    邻接矩阵(Adjacency Matrix)存储方式是用两个数组来表示。一个一维数组存储图中顶点信息,一个二维数组(称为邻接矩阵)存储图中边或弧信息。...设G有n个顶点,则邻接矩阵是一个n*n方阵,定义为: ? 我们来看一个实例,7-4-2左图就是一个无向。 ? 我们再来看一个有向图样例,如图7-4-3所示左图。 ?...在术语中,我们提到了网概念,也就是每条边上都带有权叫做网。那些这些权值就需要保存下来。 设G是网,有n个顶点,则邻接矩阵是一个n*n方阵,定义为: ?...下面示例无向网创建代码:(改编自《大话数据结构》) #include using namespace std; #define MAXVEX 100/* 最大顶点数,应由用户定义...,可看作边表 */     int numNodes, numEdges;/* 图中当前顶点数和边数  */ } MGraph; /* 建立无向网邻接矩阵表示 */ void CreateMGraph

    4.6K80

    直播短视频源码,邻接矩阵实现相关代码

    v1,v2:"<<endl;     cin>>c1>>c2;     v1=Locate(c1,G);     v2=Locate(c2,G);     if(G.type==DG)     {         ...:有向"<<endl;     else if(G.type==UDG)cout<<"类型:无向"<<endl;     else if(G.type==DN)cout<<"类型:有向网"<...<<"数目:"<<G.arcnum<<endl;     cout<<"顶点集合:";     for(int i=1;i<=G.vertexnum;i++)cout<<G.vertex[i...]<<" ";     cout<<endl;     cout<<"邻接矩阵:"<<endl;     bool flag=true;         for(int i=1;i<=G.vertexnum...<endl;     DFStraverse(G);     cout<<"广度遍历:"<<endl;     BFStraverse(G);     return 0; } 以上就是直播短视频源码,邻接矩阵实现相关代码

    52331

    数据结构:存储结构之邻接矩阵

    大家好,又见面了,我是你们朋友全栈君。 邻接矩阵(Adjacency Matrix)存储方式是用两个数组来表示。...一个一维数组存储图中顶点信息,一个二维数组(称为邻接矩阵)存储图中边或弧信息。...设G有n个顶点,则邻接矩阵是一个n*n方阵,定义为: 我们来看一个实例,7-4-2左图就是一个无向。 我们再来看一个有向图样例,如图7-4-3所示左图。...设G是网,有n个顶点,则邻接矩阵是一个n*n方阵,定义为: 如图7-4-4左图就是一个有向网。...下面示例无向网创建代码:(改编自《大话数据结构》) C++ Code #include using namespace std; #define MAXVEX 100

    74430

    函数调用堆栈-c语言

    我们就使用一个简单c语言程序来对描述一下在函数调用时候都发生了什么。 ?...中间一小段没有意义汇编语言是为了方便设置断点,为后面的调试做好铺垫,因为有时会碰到找不到断点位置情况,使用这个方法,可以在找不到断点时候向后执行一次,而不破坏我们想调试程序当前堆栈状态,这里对...我们先假设初始状态下堆栈如下,esp与ebp真实距离我们省略。 ? 接下来我们来看一下后面的操作。 ?...然后让esp减去了0c0h位,开始提升堆栈了,为程序运行开辟一个存储空间,这个区域也就是平时所说缓冲区,因为一个单元是四个字节,c0也就是往上提了48个格,由于位置有限中间依旧省略,此时堆栈就变成了如下样子...接下来让esp增加0c0,也就恢复到了提升堆栈之前位置,此时esp与ebp到了一个位置。 ?

    2.7K10

    C语言结构总结(一)

    这里主要介绍: 各种定义 顶点与边之间关系 存储结构(邻接矩阵、邻接列表等) 遍历方法(深度优先、广度优先) 最小生成树算法(Prim 算法、Kruskal 算法) # 各种定义...(同上) 连通生成树:即一个极小连通子,含有图中全部 n 个顶点,但只有 n-1 条边(对一个删去多余边)。 有向树:恰有一个顶点入度为 0,其余顶点入度均为 1 有向。...# 存储结构 ---- 下面使用 C语言 来描述数据结构 先把最小单位定义一下: typedef char[4] Vertex;// 顶点信息 typedef int Weight;// 权重...typedef int Number;// 数值类 # 邻接矩阵 邻接矩阵 typedef Weight** Matrix;// 矩阵 typedef struct GMatrix {// 邻接矩阵存储结构...重复 2、3,直到遍历完所有的边,此时已形成最小生成树 Example: 参考: C 语言数据结构与算法视频教程全集 VisuAlgo - 图形据结构(邻接矩阵,邻接列表,边缘列表)

    2K20

    数据结构与算法 -- 邻接矩阵)原理详解

    PS:在数据结构中有着非常大分量,它比树有着更为复杂形式结构,这里就不再说基本概念,直接就说存储结构,邻接矩阵和邻接表。是有方向,有方向叫做弧,无方向叫做边。...在大多行业中使用也是很多,比如说游戏中两个人物寻址,自动寻路,就是直接经过计算然后移动。后序还会介绍Dijkstra(迪杰斯特拉)算法计算最短路径问题。 下面介绍邻接矩阵原理: ?...思路 首先把要知道顶点和边数,然后单独把顶点存在一维数组中,根据边来确定两个顶点之间联系,比如说第一条边,是A->B。归根结底也是通过数组来存储。当然这是邻接矩阵。...c=1; } // printf("c值是%d",c); g->arc[ii][jj] = c; g->arc[jj][ii] = c;...// 无向 } printfL(g); }  3:打印表 void printfL(MGraphy *g) { //输出信息 printf("表为 :\n");

    1.1K30
    领券