软考-软件设计师:数据结构-图的存储

介绍

图的基本存储结构有:

  • 邻接矩阵表示法
  • 邻接链表表示法

方式一 - 邻接矩阵表示法

用一个 n 阶方阵 R 来存放图中 各结点 的 关联信息,其矩阵元素 Rij 定义为:

如下图是无向图:

矩阵中的数据如下(本例下标从 1 开始):

  • R1,1 的值是 0,表示顶点 1 与 本身没有边
  • 同上,R2,2 到 R5,5 都是 0,顶点与本身没有边
  • R1,2 的值是 1,表示顶点 1 与 2 之间有边
  • 由于是 无向图,同理,顶点 2 与 1 之间也有边,所以 R2,1 的值是 1

优点:查询速度快
缺点:插入数据速度慢

总结

图中有 n 个顶点,矩阵的大小是 n * n

方式二 - 邻接链表表示法

首先把每个顶点的 邻接顶点 用 链表 表示出来,然后用一个 一维数组 来顺序存储上面 每个链表的头指针。

有向图如下:

邻接链表如下:

有 8 个顶点,也就有 8 个链表,将 8 个链表头指针顺序存储到一维数组

总结

邻接链表中元素的数量 = 图顶点数量 + 边的数量

计算方式:

  • 数组的长度:图顶点数量
  • 数组元素是链表指针,链表的长度:该图顶点边的数量

题

对于如下所示的有向图,其邻接矩阵是一个()的矩阵。采用邻接链表存储时,顶点1的表结点个数为2,顶点5的表结点个数为0,顶点2和3的表结点个数分别为( )

A、5×5
B、5×7
C、7×5
D、7×7

A、2.1
B、2.2
C、3.4
D、4.3

问题1 - 答案

A

问题2 - 答案

B


原文出处:/show_1GWw8kmyavm.html