图也是一种非线性表,通过指针进行相关联系的结构。每个节点在图里都叫做 顶点 图的顶点和顶点之间任意之间都可以产生关系,这种关系叫做边。边的数量叫做度,也就是说跟顶点有多少个边就是多少度,图可以分为 有向图和无向图,有向就是说顶点和顶点之间是有方向的,在有向图中度分为入度和出度无向图中统一叫做度,顶点的入度,表示有多少条边指向这个顶点;顶点的出度,表示有多少条边是以这个顶点为起点指向其他顶点,带权图也是一个常用的概念,意思就是边上的亲密度,也就是带有计数的意思,就是所谓的带权图。
如果是无向图 有 i j 两个点 那么他们之前的储存就是 a[i][j] 和 a [j][i] 如果不是带权图 那么只需要等于1 即可,如果是带权图 那么只需要 等于相应的权即可。如果是有向图 那么 如果是从i 指向了j 那么就是 a[i][j] = 1 如果是 j指向了i 那么就是a[j][i]= 1 这就是 矩阵储存办法。
这种方法的优点就是 可以利用索引立马定位到该有的point,而且二维数组结构简单,但是缺点也是很明显,就是如果顶点多但是 边少,那么就是出现 大量的空间浪费。
使用数组会造成资源的浪费,但是使用链表的方式,一个顶点然后后面跟着一个链表,链表里是跟这个顶点先关的点,或者有向图的话就是这个点指向的点。 当然这个链表可以换成其它数据结构,比如二叉查找树,跳表,红黑树,这种都可以。