: B* S) H# j2 P( c5 N# S4 V U5 ?. `" M! ~: W" F | }7 ]乍一看,这不是散列表嘛!每个顶点对应一条链表,链表中存储的是与这个顶点相连接的其他顶点.- G. y _" ~, P/ c& U. z6 m
嘿嘿,直觉超棒! - g/ @ G* T) i6 t* j' m, a, @ d9 |6 j. I
如果你对散列表熟悉的话,应该知道,在散列表中,如果链太长了,会导致冲突概率增大,复杂度也蹭的一下升高.而且吧,链表的存储方式你也知道,不是连续的,所以相对于数组来说, CPU 读取就会慢一些,相对于邻接矩阵的存储方式,在邻接表中查询两个顶点之间的关系就没那么高效了.4 g' f! l, ?2 b" @
所以在实际开发中要注意遇到这种情况该如何处理,或者在刚开始的时候就直接设计好实现方式.比如可以将邻接表中的链表改为平衡二叉树,或者红黑树. / H& u, ?3 B. c, @5 ~ u, {+ Y! y( h我觉得对于数据结构来说,没有最好的,只有最合适的~8 j1 t$ {/ \0 R( b
7 b$ z( @# n' r6 f3 n8 u" @参考 & U' u& L* V8 U" j6 W4 t M$ \' }8 ^# z- e- T) Z T, j! U' p: |
极客时间—<数据结构与算法之美>5 v) U6 B- O: f: Y
————————————————, O8 m6 R7 a' b6 \7 N5 L! C
版权声明:本文为CSDN博主「郑璐璐」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 ) M4 t* o N L0 K原文链接:https://blog.csdn.net/zll_0405/article/details/105209800! K: U3 k: v2 d
' b) e& w% E j7 j a 2 T/ |2 U- \# H% | ^% |9 v" \ w1 n