邻接矩阵和邻接表
图的存储结构主要分两种,⼀种是邻接矩阵,⼀种是邻接表。
1.邻接矩阵
邻接矩阵的存储⽅式是⽤两个数组来表⽰图。⼀个⼀维数组储存图中顶点信息,⼀个⼆维数组储存图中的边或弧的信息。
⽆向图
这⾥右图是把顶点作为矩阵内⾏和列的标头罗列出来。如果在两个顶点之间存在⼀条边,那么就把1放在这个位置上。如果边不存
在,那么就赋值为0。
从上⾯可以看出,⽆向图的边数组是⼀个对称矩阵。所谓对称矩阵就是n阶矩阵的元满⾜aij=aji。即从矩阵的努力工作的成语 左上⾓到右下⾓的主对⾓
线为轴,右上⾓的元和左下⾓相对应的元全都是相等的。
从矩阵中很容易分析到图中信息:
1)判断顶点之间是否入党感想 有边很容易;
2)要知道顶点的度,其实就是这个顶点在第i⾏(或第i列)的元素之和;
3)求顶点vi的所有邻接点就是将矩阵中第i⾏元素扫描⼀遍,arc[i][j]为1学习linux 就是邻接点。
有向图
上图图右是⼀个有向图。有向图是看⼊度和出度的(顶五式太极拳 点的⼊边数和出边数),例如V2,就有2个出边。列代表着顶点的⼊边,列的元素
相加代表顶点的⼊度,⽽⾏则代表该顶点所有的出边,元素相加则为顶点的出度。假如V2->V1的这个关系要写到邻接矩阵,⾸先先找到V1
的列,然后在对应V2⾏的位置写上⼀个1,就可以了。
⽹络
⽹络是⼀个带权图。邻接矩阵如下图:
有两种表⽰⽅法,没有边的两个顶点,可以⽤0表⽰,也可以⽤最⼤值表⽰。
2.邻接表
邻接矩阵是不错的⼀种图存储结构,但是,对于边数相对顶点较少的图,这种结构存在对存储空间的极⼤浪费。因此,找到⼀种数组与
链表相结合的存储⽅法称为邻接表。
邻接表的处理⽅法是这样的:
1)图中顶点⽤⼀个⼀维数组存储,当然,顶后悔造句 点也可以⽤单链表来存储,不过,数组可天秤男和射手女 以较容易的读麻将的打法 取顶点的信息,更加⽅便。
2)图中每个顶点vi的所有邻接点构成⼀个线性表,由于邻接点的个数不定,所以,⽤单链表存储,⽆向图称为顶点vi的边表,有向图
则称为顶点vi作为弧尾的出边表(只管顶点的出边不管⼊边)。
从图中可以看出,顶点表的各个结点由data和firstedge两个域表⽰,data是数据域,存储顶点的信息,firstedge是指针古风词汇 域,指向边表
的第⼀个结点,即此顶点的第⼀个邻接点。边表结点由adjvex和next两个域组成。adjvex是邻接点域,存储某顶点的邻接点在顶点表中的
下标,next则存储指向边表中下⼀个结点的指针。
本文发布于:2023-03-17 07:41:58,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/1679010119145513.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:边表.doc
本文 PDF 下载地址:边表.pdf
留言与评论(共有 0 条评论) |