@ -18,7 +18,7 @@
< link rel = "prev" href = "../graph/" >
< link rel = "next" href = "../ ../chapter_searching/linear_search /">
< link rel = "next" href = "../ graph_traversal /">
< link rel = "icon" href = "../../assets/images/favicon.png" >
< meta name = "generator" content = "mkdocs-1.4.2, mkdocs-material-9.0.11" >
@ -1112,6 +1112,8 @@
< label class = "md-nav__link" for = "__nav_10" id = "__nav_10_label" tabindex = "0" >
9. 图
< span class = "md-nav__icon md-icon" > < / span >
@ -1207,6 +1209,20 @@
< li class = "md-nav__item" >
< a href = "../graph_traversal/" class = "md-nav__link" >
9.3. 图的遍历
< / a >
< / li >
< / ul >
< / nav >
< / li >
@ -2187,459 +2203,425 @@
< / div >
< / div >
< p > 基于邻接表实现图的代码如下所示。< / p >
< div class = "admonition question" >
< p class = "admonition-title" > 为什么需要使用顶点类 < code > Vertex< / code > ? < / p >
< p > 如果我们直接通过顶点值来区分不同顶点,那么值重复的顶点将无法被区分。
如果建立一个顶点列表,用索引来区分不同顶点,那么假设我们想要删除索引为 < code > i< / code > 的顶点,则需要遍历整个邻接表,将其中 < span class = "arithmatex" > \(> i\)< / span > 的索引全部执行 < span class = "arithmatex" > \(-1\)< / span > ,这样的操作是比较耗时的。
因此,通过引入顶点类 < code > Vertex< / code > ,每个顶点都是唯一的对象,这样在删除操作时就无需改动其余顶点了。< / p >
< / div >
< div class = "tabbed-set tabbed-alternate" data-tabs = "4:10" > < input checked = "checked" id = "__tabbed_4_1" name = "__tabbed_4" type = "radio" / > < input id = "__tabbed_4_2" name = "__tabbed_4" type = "radio" / > < input id = "__tabbed_4_3" name = "__tabbed_4" type = "radio" / > < input id = "__tabbed_4_4" name = "__tabbed_4" type = "radio" / > < input id = "__tabbed_4_5" name = "__tabbed_4" type = "radio" / > < input id = "__tabbed_4_6" name = "__tabbed_4" type = "radio" / > < input id = "__tabbed_4_7" name = "__tabbed_4" type = "radio" / > < input id = "__tabbed_4_8" name = "__tabbed_4" type = "radio" / > < input id = "__tabbed_4_9" name = "__tabbed_4" type = "radio" / > < input id = "__tabbed_4_10" name = "__tabbed_4" type = "radio" / > < div class = "tabbed-labels" > < label for = "__tabbed_4_1" > Java< / label > < label for = "__tabbed_4_2" > C++< / label > < label for = "__tabbed_4_3" > Python< / label > < label for = "__tabbed_4_4" > Go< / label > < label for = "__tabbed_4_5" > JavaScript< / label > < label for = "__tabbed_4_6" > TypeScript< / label > < label for = "__tabbed_4_7" > C< / label > < label for = "__tabbed_4_8" > C#< / label > < label for = "__tabbed_4_9" > Swift< / label > < label for = "__tabbed_4_10" > Zig< / label > < / div >
< div class = "tabbed-content" >
< div class = "tabbed-block" >
< div class = "highlight" > < span class = "filename" > graph_adjacency_list.java< / span > < pre > < span > < / span > < code > < a id = "__codelineno-10-1" name = "__codelineno-10-1" href = "#__codelineno-10-1" > < / a > < span class = "cm" > /* 顶点类 */< / span >
< a id = "__codelineno-10-2" name = "__codelineno-10-2" href = "#__codelineno-10-2" > < / a > < span class = "kd" > class< / span > < span class = "nc" > Vertex< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-10-3" name = "__codelineno-10-3" href = "#__codelineno-10-3" > < / a > < span class = "w" > < / span > < span class = "kt" > int< / span > < span class = "w" > < / span > < span class = "n" > val< / span > < span class = "p" > ;< / span >
< a id = "__codelineno-10-4" name = "__codelineno-10-4" href = "#__codelineno-10-4" > < / a > < span class = "w" > < / span > < span class = "kd" > public< / span > < span class = "w" > < / span > < span class = "nf" > Vertex< / span > < span class = "p" > (< / span > < span class = "kt" > int< / span > < span class = "w" > < / span > < span class = "n" > val< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-10-5" name = "__codelineno-10-5" href = "#__codelineno-10-5" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "na" > val< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "n" > val< / span > < span class = "p" > ;< / span >
< a id = "__codelineno-10-6" name = "__codelineno-10-6" href = "#__codelineno-10-6" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-10-7" name = "__codelineno-10-7" href = "#__codelineno-10-7" > < / a > < span class = "p" > }< / span >
< a id = "__codelineno-10-8" name = "__codelineno-10-8" href = "#__codelineno-10-8" > < / a >
< a id = "__codelineno-10-9" name = "__codelineno-10-9" href = "#__codelineno-10-9" > < / a > < span class = "cm" > /* 基于邻接表实现的无向图类 */< / span >
< a id = "__codelineno-10-10" name = "__codelineno-10-10" href = "#__codelineno-10-10" > < / a > < span class = "kd" > class< / span > < span class = "nc" > GraphAdjList< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-10-11" name = "__codelineno-10-11" href = "#__codelineno-10-11" > < / a > < span class = "w" > < / span > < span class = "c1" > // 请注意, vertices 和 adjList 中存储的都是 Vertex 对象< / span >
< a id = "__codelineno-10-12" name = "__codelineno-10-12" href = "#__codelineno-10-12" > < / a > < span class = "w" > < / span > < span class = "n" > Map< / span > < span class = "o" > < < / span > < span class = "n" > Vertex< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > Set< / span > < span class = "o" > < < / span > < span class = "n" > Vertex< / span > < span class = "o" > > > < / span > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > ;< / span > < span class = "w" > < / span > < span class = "c1" > // 邻接表(使用哈希表实现)< / span >
< a id = "__codelineno-10-13" name = "__codelineno-10-13" href = "#__codelineno-10-13" > < / a >
< a id = "__codelineno-10-14" name = "__codelineno-10-14" href = "#__codelineno-10-14" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 构造方法 */< / span >
< a id = "__codelineno-10-15" name = "__codelineno-10-15" href = "#__codelineno-10-15" > < / a > < span class = "w" > < / span > < span class = "kd" > public< / span > < span class = "w" > < / span > < span class = "nf" > GraphAdjList< / span > < span class = "p" > (< / span > < span class = "n" > Vertex< / span > < span class = "o" > [][]< / span > < span class = "w" > < / span > < span class = "n" > edges< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-10-16" name = "__codelineno-10-16" href = "#__codelineno-10-16" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "na" > adjList< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "k" > new< / span > < span class = "w" > < / span > < span class = "n" > HashMap< / span > < span class = "o" > < > < / span > < span class = "p" > ();< / span >
< a id = "__codelineno-10-17" name = "__codelineno-10-17" href = "#__codelineno-10-17" > < / a > < span class = "w" > < / span > < span class = "c1" > // 添加所有顶点和边< / span >
< a id = "__codelineno-10-18" name = "__codelineno-10-18" href = "#__codelineno-10-18" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > Vertex< / span > < span class = "o" > []< / span > < span class = "w" > < / span > < span class = "n" > edge< / span > < span class = "w" > < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "n" > edges< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-10-19" name = "__codelineno-10-19" href = "#__codelineno-10-19" > < / a > < span class = "w" > < / span > < span class = "n" > addVertex< / span > < span class = "p" > (< / span > < span class = "n" > edge< / span > < span class = "o" > [< / span > < span class = "mi" > 0< / span > < span class = "o" > ]< / span > < span class = "p" > );< / span >
< a id = "__codelineno-10-20" name = "__codelineno-10-20" href = "#__codelineno-10-20" > < / a > < span class = "w" > < / span > < span class = "n" > addVertex< / span > < span class = "p" > (< / span > < span class = "n" > edge< / span > < span class = "o" > [< / span > < span class = "mi" > 1< / span > < span class = "o" > ]< / span > < span class = "p" > );< / span >
< a id = "__codelineno-10-21" name = "__codelineno-10-21" href = "#__codelineno-10-21" > < / a > < span class = "w" > < / span > < span class = "n" > addEdge< / span > < span class = "p" > (< / span > < span class = "n" > edge< / span > < span class = "o" > [< / span > < span class = "mi" > 0< / span > < span class = "o" > ]< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > edge< / span > < span class = "o" > [< / span > < span class = "mi" > 1< / span > < span class = "o" > ]< / span > < span class = "p" > );< / span >
< a id = "__codelineno-10-22" name = "__codelineno-10-22" href = "#__codelineno-10-22" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-10-23" name = "__codelineno-10-23" href = "#__codelineno-10-23" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-10-24" name = "__codelineno-10-24" href = "#__codelineno-10-24" > < / a >
< a id = "__codelineno-10-25" name = "__codelineno-10-25" href = "#__codelineno-10-25" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 获取顶点数量 */< / span >
< a id = "__codelineno-10-26" name = "__codelineno-10-26" href = "#__codelineno-10-26" > < / a > < span class = "w" > < / span > < span class = "kd" > public< / span > < span class = "w" > < / span > < span class = "kt" > int< / span > < span class = "w" > < / span > < span class = "nf" > size< / span > < span class = "p" > ()< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-10-27" name = "__codelineno-10-27" href = "#__codelineno-10-27" > < / a > < span class = "w" > < / span > < span class = "k" > return< / span > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "na" > size< / span > < span class = "p" > ();< / span >
< a id = "__codelineno-10-28" name = "__codelineno-10-28" href = "#__codelineno-10-28" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-10-29" name = "__codelineno-10-29" href = "#__codelineno-10-29" > < / a >
< a id = "__codelineno-10-30" name = "__codelineno-10-30" href = "#__codelineno-10-30" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 添加边 */< / span >
< a id = "__codelineno-10-31" name = "__codelineno-10-31" href = "#__codelineno-10-31" > < / a > < span class = "w" > < / span > < span class = "kd" > public< / span > < span class = "w" > < / span > < span class = "kt" > void< / span > < span class = "w" > < / span > < span class = "nf" > addEdge< / span > < span class = "p" > (< / span > < span class = "n" > Vertex< / span > < span class = "w" > < / span > < span class = "n" > vet1< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > Vertex< / span > < span class = "w" > < / span > < span class = "n" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-10-32" name = "__codelineno-10-32" href = "#__codelineno-10-32" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "o" > !< / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "na" > containsKey< / span > < span class = "p" > (< / span > < span class = "n" > vet1< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "o" > !< / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "na" > containsKey< / span > < span class = "p" > (< / span > < span class = "n" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "n" > vet1< / span > < span class = "w" > < / span > < span class = "o" > ==< / span > < span class = "w" > < / span > < span class = "n" > vet2< / span > < span class = "p" > )< / span >
< a id = "__codelineno-10-33" name = "__codelineno-10-33" href = "#__codelineno-10-33" > < / a > < span class = "w" > < / span > < span class = "k" > throw< / span > < span class = "w" > < / span > < span class = "k" > new< / span > < span class = "w" > < / span > < span class = "n" > IllegalArgumentException< / span > < span class = "p" > ();< / span >
< a id = "__codelineno-10-34" name = "__codelineno-10-34" href = "#__codelineno-10-34" > < / a > < span class = "w" > < / span > < span class = "c1" > // 添加边 vet1 - vet2< / span >
< a id = "__codelineno-10-35" name = "__codelineno-10-35" href = "#__codelineno-10-35" > < / a > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "na" > get< / span > < span class = "p" > (< / span > < span class = "n" > vet1< / span > < span class = "p" > ).< / span > < span class = "na" > add< / span > < span class = "p" > (< / span > < span class = "n" > vet2< / span > < span class = "p" > );< / span >
< a id = "__codelineno-10-36" name = "__codelineno-10-36" href = "#__codelineno-10-36" > < / a > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "na" > get< / span > < span class = "p" > (< / span > < span class = "n" > vet2< / span > < span class = "p" > ).< / span > < span class = "na" > add< / span > < span class = "p" > (< / span > < span class = "n" > vet1< / span > < span class = "p" > );< / span >
< a id = "__codelineno-10-37" name = "__codelineno-10-37" href = "#__codelineno-10-37" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-10-38" name = "__codelineno-10-38" href = "#__codelineno-10-38" > < / a >
< a id = "__codelineno-10-39" name = "__codelineno-10-39" href = "#__codelineno-10-39" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 删除边 */< / span >
< a id = "__codelineno-10-40" name = "__codelineno-10-40" href = "#__codelineno-10-40" > < / a > < span class = "w" > < / span > < span class = "kd" > public< / span > < span class = "w" > < / span > < span class = "kt" > void< / span > < span class = "w" > < / span > < span class = "nf" > removeEdge< / span > < span class = "p" > (< / span > < span class = "n" > Vertex< / span > < span class = "w" > < / span > < span class = "n" > vet1< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > Vertex< / span > < span class = "w" > < / span > < span class = "n" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-10-41" name = "__codelineno-10-41" href = "#__codelineno-10-41" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "o" > !< / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "na" > containsKey< / span > < span class = "p" > (< / span > < span class = "n" > vet1< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "o" > !< / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "na" > containsKey< / span > < span class = "p" > (< / span > < span class = "n" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "n" > vet1< / span > < span class = "w" > < / span > < span class = "o" > ==< / span > < span class = "w" > < / span > < span class = "n" > vet2< / span > < span class = "p" > )< / span >
< a id = "__codelineno-10-42" name = "__codelineno-10-42" href = "#__codelineno-10-42" > < / a > < span class = "w" > < / span > < span class = "k" > throw< / span > < span class = "w" > < / span > < span class = "k" > new< / span > < span class = "w" > < / span > < span class = "n" > IllegalArgumentException< / span > < span class = "p" > ();< / span >
< a id = "__codelineno-10-43" name = "__codelineno-10-43" href = "#__codelineno-10-43" > < / a > < span class = "w" > < / span > < span class = "c1" > // 删除边 vet1 - vet2< / span >
< a id = "__codelineno-10-44" name = "__codelineno-10-44" href = "#__codelineno-10-44" > < / a > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "na" > get< / span > < span class = "p" > (< / span > < span class = "n" > vet1< / span > < span class = "p" > ).< / span > < span class = "na" > remove< / span > < span class = "p" > (< / span > < span class = "n" > vet2< / span > < span class = "p" > );< / span >
< a id = "__codelineno-10-45" name = "__codelineno-10-45" href = "#__codelineno-10-45" > < / a > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "na" > get< / span > < span class = "p" > (< / span > < span class = "n" > vet2< / span > < span class = "p" > ).< / span > < span class = "na" > remove< / span > < span class = "p" > (< / span > < span class = "n" > vet1< / span > < span class = "p" > );< / span >
< a id = "__codelineno-10-46" name = "__codelineno-10-46" href = "#__codelineno-10-46" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-10-47" name = "__codelineno-10-47" href = "#__codelineno-10-47" > < / a >
< a id = "__codelineno-10-48" name = "__codelineno-10-48" href = "#__codelineno-10-48" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 添加顶点 */< / span >
< a id = "__codelineno-10-49" name = "__codelineno-10-49" href = "#__codelineno-10-49" > < / a > < span class = "w" > < / span > < span class = "kd" > public< / span > < span class = "w" > < / span > < span class = "kt" > void< / span > < span class = "w" > < / span > < span class = "nf" > addVertex< / span > < span class = "p" > (< / span > < span class = "n" > Vertex< / span > < span class = "w" > < / span > < span class = "n" > vet< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-10-50" name = "__codelineno-10-50" href = "#__codelineno-10-50" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "na" > containsKey< / span > < span class = "p" > (< / span > < span class = "n" > vet< / span > < span class = "p" > ))< / span >
< a id = "__codelineno-10-51" name = "__codelineno-10-51" href = "#__codelineno-10-51" > < / a > < span class = "w" > < / span > < span class = "k" > return< / span > < span class = "p" > ;< / span >
< a id = "__codelineno-10-52" name = "__codelineno-10-52" href = "#__codelineno-10-52" > < / a > < span class = "w" > < / span > < span class = "c1" > // 在邻接表中添加一个新链表(即 HashSet) < / span >
< a id = "__codelineno-10-53" name = "__codelineno-10-53" href = "#__codelineno-10-53" > < / a > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "na" > put< / span > < span class = "p" > (< / span > < span class = "n" > vet< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "k" > new< / span > < span class = "w" > < / span > < span class = "n" > HashSet< / span > < span class = "o" > < > < / span > < span class = "p" > ());< / span >
< a id = "__codelineno-10-54" name = "__codelineno-10-54" href = "#__codelineno-10-54" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-10-55" name = "__codelineno-10-55" href = "#__codelineno-10-55" > < / a >
< a id = "__codelineno-10-56" name = "__codelineno-10-56" href = "#__codelineno-10-56" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 删除顶点 */< / span >
< a id = "__codelineno-10-57" name = "__codelineno-10-57" href = "#__codelineno-10-57" > < / a > < span class = "w" > < / span > < span class = "kd" > public< / span > < span class = "w" > < / span > < span class = "kt" > void< / span > < span class = "w" > < / span > < span class = "nf" > removeVertex< / span > < span class = "p" > (< / span > < span class = "n" > Vertex< / span > < span class = "w" > < / span > < span class = "n" > vet< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-10-58" name = "__codelineno-10-58" href = "#__codelineno-10-58" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "o" > !< / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "na" > containsKey< / span > < span class = "p" > (< / span > < span class = "n" > vet< / span > < span class = "p" > ))< / span >
< a id = "__codelineno-10-59" name = "__codelineno-10-59" href = "#__codelineno-10-59" > < / a > < span class = "w" > < / span > < span class = "k" > throw< / span > < span class = "w" > < / span > < span class = "k" > new< / span > < span class = "w" > < / span > < span class = "n" > IllegalArgumentException< / span > < span class = "p" > ();< / span >
< a id = "__codelineno-10-60" name = "__codelineno-10-60" href = "#__codelineno-10-60" > < / a > < span class = "w" > < / span > < span class = "c1" > // 在邻接表中删除顶点 vet 对应的链表(即 HashSet) < / span >
< a id = "__codelineno-10-61" name = "__codelineno-10-61" href = "#__codelineno-10-61" > < / a > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "na" > remove< / span > < span class = "p" > (< / span > < span class = "n" > vet< / span > < span class = "p" > );< / span >
< a id = "__codelineno-10-62" name = "__codelineno-10-62" href = "#__codelineno-10-62" > < / a > < span class = "w" > < / span > < span class = "c1" > // 遍历其它顶点的链表(即 HashSet) , 删除所有包含 vet 的边< / span >
< a id = "__codelineno-10-63" name = "__codelineno-10-63" href = "#__codelineno-10-63" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > Set< / span > < span class = "o" > < < / span > < span class = "n" > Vertex< / span > < span class = "o" > > < / span > < span class = "w" > < / span > < span class = "n" > set< / span > < span class = "w" > < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "na" > values< / span > < span class = "p" > ())< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-10-64" name = "__codelineno-10-64" href = "#__codelineno-10-64" > < / a > < span class = "w" > < / span > < span class = "n" > set< / span > < span class = "p" > .< / span > < span class = "na" > remove< / span > < span class = "p" > (< / span > < span class = "n" > vet< / span > < span class = "p" > );< / span >
< a id = "__codelineno-10-65" name = "__codelineno-10-65" href = "#__codelineno-10-65" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-10-66" name = "__codelineno-10-66" href = "#__codelineno-10-66" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-10-67" name = "__codelineno-10-67" href = "#__codelineno-10-67" > < / a >
< a id = "__codelineno-10-68" name = "__codelineno-10-68" href = "#__codelineno-10-68" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 打印邻接表 */< / span >
< a id = "__codelineno-10-69" name = "__codelineno-10-69" href = "#__codelineno-10-69" > < / a > < span class = "w" > < / span > < span class = "kd" > public< / span > < span class = "w" > < / span > < span class = "kt" > void< / span > < span class = "w" > < / span > < span class = "nf" > print< / span > < span class = "p" > ()< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-10-70" name = "__codelineno-10-70" href = "#__codelineno-10-70" > < / a > < span class = "w" > < / span > < span class = "n" > System< / span > < span class = "p" > .< / span > < span class = "na" > out< / span > < span class = "p" > .< / span > < span class = "na" > println< / span > < span class = "p" > (< / span > < span class = "s" > " 邻接表 =" < / span > < span class = "p" > );< / span >
< a id = "__codelineno-10-71" name = "__codelineno-10-71" href = "#__codelineno-10-71" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > Map< / span > < span class = "p" > .< / span > < span class = "na" > Entry< / span > < span class = "o" > < < / span > < span class = "n" > Vertex< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > Set< / span > < span class = "o" > < < / span > < span class = "n" > Vertex< / span > < span class = "o" > > > < / span > < span class = "w" > < / span > < span class = "n" > entry< / span > < span class = "w" > < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "na" > entrySet< / span > < span class = "p" > ())< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-10-72" name = "__codelineno-10-72" href = "#__codelineno-10-72" > < / a > < span class = "w" > < / span > < span class = "n" > List< / span > < span class = "o" > < < / span > < span class = "n" > Integer< / span > < span class = "o" > > < / span > < span class = "w" > < / span > < span class = "n" > tmp< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "k" > new< / span > < span class = "w" > < / span > < span class = "n" > ArrayList< / span > < span class = "o" > < > < / span > < span class = "p" > ();< / span >
< a id = "__codelineno-10-73" name = "__codelineno-10-73" href = "#__codelineno-10-73" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > Vertex< / span > < span class = "w" > < / span > < span class = "n" > vertex< / span > < span class = "w" > < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "n" > entry< / span > < span class = "p" > .< / span > < span class = "na" > getValue< / span > < span class = "p" > ())< / span >
< a id = "__codelineno-10-74" name = "__codelineno-10-74" href = "#__codelineno-10-74" > < / a > < span class = "w" > < / span > < span class = "n" > tmp< / span > < span class = "p" > .< / span > < span class = "na" > add< / span > < span class = "p" > (< / span > < span class = "n" > vertex< / span > < span class = "p" > .< / span > < span class = "na" > val< / span > < span class = "p" > );< / span >
< a id = "__codelineno-10-75" name = "__codelineno-10-75" href = "#__codelineno-10-75" > < / a > < span class = "w" > < / span > < span class = "n" > System< / span > < span class = "p" > .< / span > < span class = "na" > out< / span > < span class = "p" > .< / span > < span class = "na" > println< / span > < span class = "p" > (< / span > < span class = "n" > entry< / span > < span class = "p" > .< / span > < span class = "na" > getKey< / span > < span class = "p" > ().< / span > < span class = "na" > val< / span > < span class = "w" > < / span > < span class = "o" > +< / span > < span class = "w" > < / span > < span class = "s" > " : " < / span > < span class = "w" > < / span > < span class = "o" > +< / span > < span class = "w" > < / span > < span class = "n" > tmp< / span > < span class = "w" > < / span > < span class = "o" > +< / span > < span class = "w" > < / span > < span class = "s" > " ," < / span > < span class = "p" > );< / span >
< a id = "__codelineno-10-76" name = "__codelineno-10-76" href = "#__codelineno-10-76" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-10-77" name = "__codelineno-10-77" href = "#__codelineno-10-77" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-10-78" name = "__codelineno-10-78" href = "#__codelineno-10-78" > < / a > < span class = "p" > }< / span >
< div class = "highlight" > < span class = "filename" > graph_adjacency_list.java< / span > < pre > < span > < / span > < code > < a id = "__codelineno-10-1" name = "__codelineno-10-1" href = "#__codelineno-10-1" > < / a > < span class = "cm" > /* 基于邻接表实现的无向图类 */< / span >
< a id = "__codelineno-10-2" name = "__codelineno-10-2" href = "#__codelineno-10-2" > < / a > < span class = "kd" > class< / span > < span class = "nc" > GraphAdjList< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-10-3" name = "__codelineno-10-3" href = "#__codelineno-10-3" > < / a > < span class = "w" > < / span > < span class = "c1" > // 邻接表,使用哈希表来代替链表,以提升删除边、删除顶点的效率< / span >
< a id = "__codelineno-10-4" name = "__codelineno-10-4" href = "#__codelineno-10-4" > < / a > < span class = "w" > < / span > < span class = "c1" > // 请注意, adjList 中的元素是 Vertex 对象< / span >
< a id = "__codelineno-10-5" name = "__codelineno-10-5" href = "#__codelineno-10-5" > < / a > < span class = "w" > < / span > < span class = "n" > Map< / span > < span class = "o" > < < / span > < span class = "n" > Vertex< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > List< / span > < span class = "o" > < < / span > < span class = "n" > Vertex< / span > < span class = "o" > > > < / span > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > ;< / span >
< a id = "__codelineno-10-6" name = "__codelineno-10-6" href = "#__codelineno-10-6" > < / a >
< a id = "__codelineno-10-7" name = "__codelineno-10-7" href = "#__codelineno-10-7" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 构造方法 */< / span >
< a id = "__codelineno-10-8" name = "__codelineno-10-8" href = "#__codelineno-10-8" > < / a > < span class = "w" > < / span > < span class = "kd" > public< / span > < span class = "w" > < / span > < span class = "nf" > GraphAdjList< / span > < span class = "p" > (< / span > < span class = "n" > Vertex< / span > < span class = "o" > [][]< / span > < span class = "w" > < / span > < span class = "n" > edges< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-10-9" name = "__codelineno-10-9" href = "#__codelineno-10-9" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "na" > adjList< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "k" > new< / span > < span class = "w" > < / span > < span class = "n" > HashMap< / span > < span class = "o" > < > < / span > < span class = "p" > ();< / span >
< a id = "__codelineno-10-10" name = "__codelineno-10-10" href = "#__codelineno-10-10" > < / a > < span class = "w" > < / span > < span class = "c1" > // 添加所有顶点和边< / span >
< a id = "__codelineno-10-11" name = "__codelineno-10-11" href = "#__codelineno-10-11" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > Vertex< / span > < span class = "o" > []< / span > < span class = "w" > < / span > < span class = "n" > edge< / span > < span class = "w" > < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "n" > edges< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-10-12" name = "__codelineno-10-12" href = "#__codelineno-10-12" > < / a > < span class = "w" > < / span > < span class = "n" > addVertex< / span > < span class = "p" > (< / span > < span class = "n" > edge< / span > < span class = "o" > [< / span > < span class = "mi" > 0< / span > < span class = "o" > ]< / span > < span class = "p" > );< / span >
< a id = "__codelineno-10-13" name = "__codelineno-10-13" href = "#__codelineno-10-13" > < / a > < span class = "w" > < / span > < span class = "n" > addVertex< / span > < span class = "p" > (< / span > < span class = "n" > edge< / span > < span class = "o" > [< / span > < span class = "mi" > 1< / span > < span class = "o" > ]< / span > < span class = "p" > );< / span >
< a id = "__codelineno-10-14" name = "__codelineno-10-14" href = "#__codelineno-10-14" > < / a > < span class = "w" > < / span > < span class = "n" > addEdge< / span > < span class = "p" > (< / span > < span class = "n" > edge< / span > < span class = "o" > [< / span > < span class = "mi" > 0< / span > < span class = "o" > ]< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > edge< / span > < span class = "o" > [< / span > < span class = "mi" > 1< / span > < span class = "o" > ]< / span > < span class = "p" > );< / span >
< a id = "__codelineno-10-15" name = "__codelineno-10-15" href = "#__codelineno-10-15" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-10-16" name = "__codelineno-10-16" href = "#__codelineno-10-16" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-10-17" name = "__codelineno-10-17" href = "#__codelineno-10-17" > < / a >
< a id = "__codelineno-10-18" name = "__codelineno-10-18" href = "#__codelineno-10-18" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 获取顶点数量 */< / span >
< a id = "__codelineno-10-19" name = "__codelineno-10-19" href = "#__codelineno-10-19" > < / a > < span class = "w" > < / span > < span class = "kd" > public< / span > < span class = "w" > < / span > < span class = "kt" > int< / span > < span class = "w" > < / span > < span class = "nf" > size< / span > < span class = "p" > ()< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-10-20" name = "__codelineno-10-20" href = "#__codelineno-10-20" > < / a > < span class = "w" > < / span > < span class = "k" > return< / span > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "na" > size< / span > < span class = "p" > ();< / span >
< a id = "__codelineno-10-21" name = "__codelineno-10-21" href = "#__codelineno-10-21" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-10-22" name = "__codelineno-10-22" href = "#__codelineno-10-22" > < / a >
< a id = "__codelineno-10-23" name = "__codelineno-10-23" href = "#__codelineno-10-23" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 添加边 */< / span >
< a id = "__codelineno-10-24" name = "__codelineno-10-24" href = "#__codelineno-10-24" > < / a > < span class = "w" > < / span > < span class = "kd" > public< / span > < span class = "w" > < / span > < span class = "kt" > void< / span > < span class = "w" > < / span > < span class = "nf" > addEdge< / span > < span class = "p" > (< / span > < span class = "n" > Vertex< / span > < span class = "w" > < / span > < span class = "n" > vet1< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > Vertex< / span > < span class = "w" > < / span > < span class = "n" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-10-25" name = "__codelineno-10-25" href = "#__codelineno-10-25" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "o" > !< / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "na" > containsKey< / span > < span class = "p" > (< / span > < span class = "n" > vet1< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "o" > !< / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "na" > containsKey< / span > < span class = "p" > (< / span > < span class = "n" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "n" > vet1< / span > < span class = "w" > < / span > < span class = "o" > ==< / span > < span class = "w" > < / span > < span class = "n" > vet2< / span > < span class = "p" > )< / span >
< a id = "__codelineno-10-26" name = "__codelineno-10-26" href = "#__codelineno-10-26" > < / a > < span class = "w" > < / span > < span class = "k" > throw< / span > < span class = "w" > < / span > < span class = "k" > new< / span > < span class = "w" > < / span > < span class = "n" > IllegalArgumentException< / span > < span class = "p" > ();< / span >
< a id = "__codelineno-10-27" name = "__codelineno-10-27" href = "#__codelineno-10-27" > < / a > < span class = "w" > < / span > < span class = "c1" > // 添加边 vet1 - vet2< / span >
< a id = "__codelineno-10-28" name = "__codelineno-10-28" href = "#__codelineno-10-28" > < / a > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "na" > get< / span > < span class = "p" > (< / span > < span class = "n" > vet1< / span > < span class = "p" > ).< / span > < span class = "na" > add< / span > < span class = "p" > (< / span > < span class = "n" > vet2< / span > < span class = "p" > );< / span >
< a id = "__codelineno-10-29" name = "__codelineno-10-29" href = "#__codelineno-10-29" > < / a > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "na" > get< / span > < span class = "p" > (< / span > < span class = "n" > vet2< / span > < span class = "p" > ).< / span > < span class = "na" > add< / span > < span class = "p" > (< / span > < span class = "n" > vet1< / span > < span class = "p" > );< / span >
< a id = "__codelineno-10-30" name = "__codelineno-10-30" href = "#__codelineno-10-30" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-10-31" name = "__codelineno-10-31" href = "#__codelineno-10-31" > < / a >
< a id = "__codelineno-10-32" name = "__codelineno-10-32" href = "#__codelineno-10-32" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 删除边 */< / span >
< a id = "__codelineno-10-33" name = "__codelineno-10-33" href = "#__codelineno-10-33" > < / a > < span class = "w" > < / span > < span class = "kd" > public< / span > < span class = "w" > < / span > < span class = "kt" > void< / span > < span class = "w" > < / span > < span class = "nf" > removeEdge< / span > < span class = "p" > (< / span > < span class = "n" > Vertex< / span > < span class = "w" > < / span > < span class = "n" > vet1< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > Vertex< / span > < span class = "w" > < / span > < span class = "n" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-10-34" name = "__codelineno-10-34" href = "#__codelineno-10-34" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "o" > !< / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "na" > containsKey< / span > < span class = "p" > (< / span > < span class = "n" > vet1< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "o" > !< / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "na" > containsKey< / span > < span class = "p" > (< / span > < span class = "n" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "n" > vet1< / span > < span class = "w" > < / span > < span class = "o" > ==< / span > < span class = "w" > < / span > < span class = "n" > vet2< / span > < span class = "p" > )< / span >
< a id = "__codelineno-10-35" name = "__codelineno-10-35" href = "#__codelineno-10-35" > < / a > < span class = "w" > < / span > < span class = "k" > throw< / span > < span class = "w" > < / span > < span class = "k" > new< / span > < span class = "w" > < / span > < span class = "n" > IllegalArgumentException< / span > < span class = "p" > ();< / span >
< a id = "__codelineno-10-36" name = "__codelineno-10-36" href = "#__codelineno-10-36" > < / a > < span class = "w" > < / span > < span class = "c1" > // 删除边 vet1 - vet2< / span >
< a id = "__codelineno-10-37" name = "__codelineno-10-37" href = "#__codelineno-10-37" > < / a > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "na" > get< / span > < span class = "p" > (< / span > < span class = "n" > vet1< / span > < span class = "p" > ).< / span > < span class = "na" > remove< / span > < span class = "p" > (< / span > < span class = "n" > vet2< / span > < span class = "p" > );< / span >
< a id = "__codelineno-10-38" name = "__codelineno-10-38" href = "#__codelineno-10-38" > < / a > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "na" > get< / span > < span class = "p" > (< / span > < span class = "n" > vet2< / span > < span class = "p" > ).< / span > < span class = "na" > remove< / span > < span class = "p" > (< / span > < span class = "n" > vet1< / span > < span class = "p" > );< / span >
< a id = "__codelineno-10-39" name = "__codelineno-10-39" href = "#__codelineno-10-39" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-10-40" name = "__codelineno-10-40" href = "#__codelineno-10-40" > < / a >
< a id = "__codelineno-10-41" name = "__codelineno-10-41" href = "#__codelineno-10-41" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 添加顶点 */< / span >
< a id = "__codelineno-10-42" name = "__codelineno-10-42" href = "#__codelineno-10-42" > < / a > < span class = "w" > < / span > < span class = "kd" > public< / span > < span class = "w" > < / span > < span class = "kt" > void< / span > < span class = "w" > < / span > < span class = "nf" > addVertex< / span > < span class = "p" > (< / span > < span class = "n" > Vertex< / span > < span class = "w" > < / span > < span class = "n" > vet< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-10-43" name = "__codelineno-10-43" href = "#__codelineno-10-43" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "na" > containsKey< / span > < span class = "p" > (< / span > < span class = "n" > vet< / span > < span class = "p" > ))< / span >
< a id = "__codelineno-10-44" name = "__codelineno-10-44" href = "#__codelineno-10-44" > < / a > < span class = "w" > < / span > < span class = "k" > return< / span > < span class = "p" > ;< / span >
< a id = "__codelineno-10-45" name = "__codelineno-10-45" href = "#__codelineno-10-45" > < / a > < span class = "w" > < / span > < span class = "c1" > // 在邻接表中添加一个新链表< / span >
< a id = "__codelineno-10-46" name = "__codelineno-10-46" href = "#__codelineno-10-46" > < / a > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "na" > put< / span > < span class = "p" > (< / span > < span class = "n" > vet< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "k" > new< / span > < span class = "w" > < / span > < span class = "n" > ArrayList< / span > < span class = "o" > < > < / span > < span class = "p" > ());< / span >
< a id = "__codelineno-10-47" name = "__codelineno-10-47" href = "#__codelineno-10-47" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-10-48" name = "__codelineno-10-48" href = "#__codelineno-10-48" > < / a >
< a id = "__codelineno-10-49" name = "__codelineno-10-49" href = "#__codelineno-10-49" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 删除顶点 */< / span >
< a id = "__codelineno-10-50" name = "__codelineno-10-50" href = "#__codelineno-10-50" > < / a > < span class = "w" > < / span > < span class = "kd" > public< / span > < span class = "w" > < / span > < span class = "kt" > void< / span > < span class = "w" > < / span > < span class = "nf" > removeVertex< / span > < span class = "p" > (< / span > < span class = "n" > Vertex< / span > < span class = "w" > < / span > < span class = "n" > vet< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-10-51" name = "__codelineno-10-51" href = "#__codelineno-10-51" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "o" > !< / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "na" > containsKey< / span > < span class = "p" > (< / span > < span class = "n" > vet< / span > < span class = "p" > ))< / span >
< a id = "__codelineno-10-52" name = "__codelineno-10-52" href = "#__codelineno-10-52" > < / a > < span class = "w" > < / span > < span class = "k" > throw< / span > < span class = "w" > < / span > < span class = "k" > new< / span > < span class = "w" > < / span > < span class = "n" > IllegalArgumentException< / span > < span class = "p" > ();< / span >
< a id = "__codelineno-10-53" name = "__codelineno-10-53" href = "#__codelineno-10-53" > < / a > < span class = "w" > < / span > < span class = "c1" > // 在邻接表中删除顶点 vet 对应的链表< / span >
< a id = "__codelineno-10-54" name = "__codelineno-10-54" href = "#__codelineno-10-54" > < / a > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "na" > remove< / span > < span class = "p" > (< / span > < span class = "n" > vet< / span > < span class = "p" > );< / span >
< a id = "__codelineno-10-55" name = "__codelineno-10-55" href = "#__codelineno-10-55" > < / a > < span class = "w" > < / span > < span class = "c1" > // 遍历其它顶点的链表,删除所有包含 vet 的边< / span >
< a id = "__codelineno-10-56" name = "__codelineno-10-56" href = "#__codelineno-10-56" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > List< / span > < span class = "o" > < < / span > < span class = "n" > Vertex< / span > < span class = "o" > > < / span > < span class = "w" > < / span > < span class = "n" > list< / span > < span class = "w" > < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "na" > values< / span > < span class = "p" > ())< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-10-57" name = "__codelineno-10-57" href = "#__codelineno-10-57" > < / a > < span class = "w" > < / span > < span class = "n" > list< / span > < span class = "p" > .< / span > < span class = "na" > remove< / span > < span class = "p" > (< / span > < span class = "n" > vet< / span > < span class = "p" > );< / span >
< a id = "__codelineno-10-58" name = "__codelineno-10-58" href = "#__codelineno-10-58" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-10-59" name = "__codelineno-10-59" href = "#__codelineno-10-59" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-10-60" name = "__codelineno-10-60" href = "#__codelineno-10-60" > < / a >
< a id = "__codelineno-10-61" name = "__codelineno-10-61" href = "#__codelineno-10-61" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 打印邻接表 */< / span >
< a id = "__codelineno-10-62" name = "__codelineno-10-62" href = "#__codelineno-10-62" > < / a > < span class = "w" > < / span > < span class = "kd" > public< / span > < span class = "w" > < / span > < span class = "kt" > void< / span > < span class = "w" > < / span > < span class = "nf" > print< / span > < span class = "p" > ()< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-10-63" name = "__codelineno-10-63" href = "#__codelineno-10-63" > < / a > < span class = "w" > < / span > < span class = "n" > System< / span > < span class = "p" > .< / span > < span class = "na" > out< / span > < span class = "p" > .< / span > < span class = "na" > println< / span > < span class = "p" > (< / span > < span class = "s" > " 邻接表 =" < / span > < span class = "p" > );< / span >
< a id = "__codelineno-10-64" name = "__codelineno-10-64" href = "#__codelineno-10-64" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > Map< / span > < span class = "p" > .< / span > < span class = "na" > Entry< / span > < span class = "o" > < < / span > < span class = "n" > Vertex< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > List< / span > < span class = "o" > < < / span > < span class = "n" > Vertex< / span > < span class = "o" > > > < / span > < span class = "w" > < / span > < span class = "n" > entry< / span > < span class = "w" > < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "na" > entrySet< / span > < span class = "p" > ())< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-10-65" name = "__codelineno-10-65" href = "#__codelineno-10-65" > < / a > < span class = "w" > < / span > < span class = "n" > List< / span > < span class = "o" > < < / span > < span class = "n" > Integer< / span > < span class = "o" > > < / span > < span class = "w" > < / span > < span class = "n" > tmp< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "k" > new< / span > < span class = "w" > < / span > < span class = "n" > ArrayList< / span > < span class = "o" > < > < / span > < span class = "p" > ();< / span >
< a id = "__codelineno-10-66" name = "__codelineno-10-66" href = "#__codelineno-10-66" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > Vertex< / span > < span class = "w" > < / span > < span class = "n" > vertex< / span > < span class = "w" > < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "n" > entry< / span > < span class = "p" > .< / span > < span class = "na" > getValue< / span > < span class = "p" > ())< / span >
< a id = "__codelineno-10-67" name = "__codelineno-10-67" href = "#__codelineno-10-67" > < / a > < span class = "w" > < / span > < span class = "n" > tmp< / span > < span class = "p" > .< / span > < span class = "na" > add< / span > < span class = "p" > (< / span > < span class = "n" > vertex< / span > < span class = "p" > .< / span > < span class = "na" > val< / span > < span class = "p" > );< / span >
< a id = "__codelineno-10-68" name = "__codelineno-10-68" href = "#__codelineno-10-68" > < / a > < span class = "w" > < / span > < span class = "n" > System< / span > < span class = "p" > .< / span > < span class = "na" > out< / span > < span class = "p" > .< / span > < span class = "na" > println< / span > < span class = "p" > (< / span > < span class = "n" > entry< / span > < span class = "p" > .< / span > < span class = "na" > getKey< / span > < span class = "p" > ().< / span > < span class = "na" > val< / span > < span class = "w" > < / span > < span class = "o" > +< / span > < span class = "w" > < / span > < span class = "s" > " : " < / span > < span class = "w" > < / span > < span class = "o" > +< / span > < span class = "w" > < / span > < span class = "n" > tmp< / span > < span class = "w" > < / span > < span class = "o" > +< / span > < span class = "w" > < / span > < span class = "s" > " ," < / span > < span class = "p" > );< / span >
< a id = "__codelineno-10-69" name = "__codelineno-10-69" href = "#__codelineno-10-69" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-10-70" name = "__codelineno-10-70" href = "#__codelineno-10-70" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-10-71" name = "__codelineno-10-71" href = "#__codelineno-10-71" > < / a > < span class = "p" > }< / span >
< / code > < / pre > < / div >
< / div >
< div class = "tabbed-block" >
< div class = "highlight" > < span class = "filename" > graph_adjacency_list.cpp< / span > < pre > < span > < / span > < code > < a id = "__codelineno-11-1" name = "__codelineno-11-1" href = "#__codelineno-11-1" > < / a > < span class = "cm" > /* 顶点 类 */< / span >
< a id = "__codelineno-11-2" name = "__codelineno-11-2" href = "#__codelineno-11-2" > < / a > < span class = "k" > struct < / span > < span class = "w" > < / span > < span class = "nc" > Vertex < / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-11-3" name = "__codelineno-11-3" href = "#__codelineno-11-3" > < / a > < span class = "w" > < / span > < span class = " kt"> int< / span > < span class = "w" > < / span > < span class = "n" > val< / span > < span class = "p" > ; < / span >
< a id = "__codelineno-11-4" name = "__codelineno-11-4" href = "#__codelineno-11-4" > < / a > < span class = "w" > < / span > < span class = " n"> Vertex< / span > < span class = "p" > (< / span > < span class = "kt" > int< / span > < span class = "w" > < / span > < span class = "n" > val< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "n" > val< / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {} < / span >
< a id = "__codelineno-11-5" name = "__codelineno-11-5" href = "#__codelineno-11-5" > < / a > < span class = " p"> } ;< / span >
< div class = "highlight" > < span class = "filename" > graph_adjacency_list.cpp< / span > < pre > < span > < / span > < code > < a id = "__codelineno-11-1" name = "__codelineno-11-1" href = "#__codelineno-11-1" > < / a > < span class = "cm" > /* 基于邻接表实现的无向图类 */< / span >
< a id = "__codelineno-11-2" name = "__codelineno-11-2" href = "#__codelineno-11-2" > < / a > < span class = "k" > class< / span > < span class = "w" > < / span > < span class = "nc" > GraphAdjList< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-11-3" name = "__codelineno-11-3" href = "#__codelineno-11-3" > < / a > < span class = "w" > < / span > < span class = "c1" > // 邻接表,使用哈希表来代替链表,以提升删除边、删除顶点的效率< / span >
< a id = "__codelineno-11-4" name = "__codelineno-11-4" href = "#__codelineno-11-4" > < / a > < span class = "w" > < / span > < span class = "c1" > // 请注意, adjList 中的元素是 Vertex 对象< / span >
< a id = "__codelineno-11-5" name = "__codelineno-11-5" href = "#__codelineno-11-5" > < / a > < span class = " w"> < / span > < span class = "n" > unordered_map< / span > < span class = "o" > < < / span > < span class = "n" > Vertex< / span > < span class = "o" > *< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > unordered_set< / span > < span class = "o" > < < / span > < span class = "n" > Vertex< / span > < span class = "o" > *> > < / span > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > ;< / span >
< a id = "__codelineno-11-6" name = "__codelineno-11-6" href = "#__codelineno-11-6" > < / a >
< a id = "__codelineno-11-7" name = "__codelineno-11-7" href = "#__codelineno-11-7" > < / a > < span class = "cm" > /* 基于邻接表实现的无向图类 */< / span >
< a id = "__codelineno-11-8" name = "__codelineno-11-8" href = "#__codelineno-11-8" > < / a > < span class = "k" > class< / span > < span class = "w" > < / span > < span class = "nc" > GraphAdjList< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-11-9" name = "__codelineno-11-9" href = "#__codelineno-11-9" > < / a > < span class = "w" > < / span > < span class = "c1" > // 请注意, vertices 和 adjList 中存储的都是 Vertex 对象< / span >
< a id = "__codelineno-11-10" name = "__codelineno-11-10" href = "#__codelineno-11-10" > < / a > < span class = "w" > < / span > < span class = "n" > unordered_map< / span > < span class = "o" > < < / span > < span class = "n" > Vertex< / span > < span class = "o" > *< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > unordered_set< / span > < span class = "o" > < < / span > < span class = "n" > Vertex< / span > < span class = "o" > *> > < / span > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > ;< / span > < span class = "w" > < / span > < span class = "c1" > // 邻接表(使用哈希表实现)< / span >
< a id = "__codelineno-11-11" name = "__codelineno-11-11" href = "#__codelineno-11-11" > < / a >
< a id = "__codelineno-11-12" name = "__codelineno-11-12" href = "#__codelineno-11-12" > < / a > < span class = "k" > public< / span > < span class = "o" > :< / span >
< a id = "__codelineno-11-13" name = "__codelineno-11-13" href = "#__codelineno-11-13" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 构造方法 */< / span >
< a id = "__codelineno-11-14" name = "__codelineno-11-14" href = "#__codelineno-11-14" > < / a > < span class = "w" > < / span > < span class = "n" > GraphAdjList< / span > < span class = "p" > (< / span > < span class = "k" > const< / span > < span class = "w" > < / span > < span class = "n" > vector< / span > < span class = "o" > < < / span > < span class = "n" > vector< / span > < span class = "o" > < < / span > < span class = "n" > Vertex< / span > < span class = "o" > *> > & < / span > < span class = "w" > < / span > < span class = "n" > edges< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-11-15" name = "__codelineno-11-15" href = "#__codelineno-11-15" > < / a > < span class = "w" > < / span > < span class = "c1" > // 添加所有顶点和边< / span >
< a id = "__codelineno-11-16" name = "__codelineno-11-16" href = "#__codelineno-11-16" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "k" > const< / span > < span class = "w" > < / span > < span class = "n" > vector< / span > < span class = "o" > < < / span > < span class = "n" > Vertex< / span > < span class = "o" > *> & < / span > < span class = "w" > < / span > < span class = "n" > edge< / span > < span class = "w" > < / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "n" > edges< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-11-17" name = "__codelineno-11-17" href = "#__codelineno-11-17" > < / a > < span class = "w" > < / span > < span class = "n" > addVertex< / span > < span class = "p" > (< / span > < span class = "n" > edge< / span > < span class = "p" > [< / span > < span class = "mi" > 0< / span > < span class = "p" > ]);< / span >
< a id = "__codelineno-11-18" name = "__codelineno-11-18" href = "#__codelineno-11-18" > < / a > < span class = "w" > < / span > < span class = "n" > addVertex< / span > < span class = "p" > (< / span > < span class = "n" > edge< / span > < span class = "p" > [< / span > < span class = "mi" > 1< / span > < span class = "p" > ]);< / span >
< a id = "__codelineno-11-19" name = "__codelineno-11-19" href = "#__codelineno-11-19" > < / a > < span class = "w" > < / span > < span class = "n" > addEdge< / span > < span class = "p" > (< / span > < span class = "n" > edge< / span > < span class = "p" > [< / span > < span class = "mi" > 0< / span > < span class = "p" > ],< / span > < span class = "w" > < / span > < span class = "n" > edge< / span > < span class = "p" > [< / span > < span class = "mi" > 1< / span > < span class = "p" > ]);< / span >
< a id = "__codelineno-11-20" name = "__codelineno-11-20" href = "#__codelineno-11-20" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-11-21" name = "__codelineno-11-21" href = "#__codelineno-11-21" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-11-22" name = "__codelineno-11-22" href = "#__codelineno-11-22" > < / a >
< a id = "__codelineno-11-23" name = "__codelineno-11-23" href = "#__codelineno-11-23" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 获取顶点数量 */< / span >
< a id = "__codelineno-11-24" name = "__codelineno-11-24" href = "#__codelineno-11-24" > < / a > < span class = "w" > < / span > < span class = "kt" > int< / span > < span class = "w" > < / span > < span class = "n" > size< / span > < span class = "p" > ()< / span > < span class = "w" > < / span > < span class = "p" > {< / span > < span class = "w" > < / span > < span class = "k" > return< / span > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "n" > size< / span > < span class = "p" > ();< / span > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-11-25" name = "__codelineno-11-25" href = "#__codelineno-11-25" > < / a >
< a id = "__codelineno-11-26" name = "__codelineno-11-26" href = "#__codelineno-11-26" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 添加边 */< / span >
< a id = "__codelineno-11-27" name = "__codelineno-11-27" href = "#__codelineno-11-27" > < / a > < span class = "w" > < / span > < span class = "kt" > void< / span > < span class = "w" > < / span > < span class = "n" > addEdge< / span > < span class = "p" > (< / span > < span class = "n" > Vertex< / span > < span class = "o" > *< / span > < span class = "w" > < / span > < span class = "n" > vet1< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > Vertex< / span > < span class = "o" > *< / span > < span class = "w" > < / span > < span class = "n" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-11-28" name = "__codelineno-11-28" href = "#__codelineno-11-28" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "o" > !< / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "n" > count< / span > < span class = "p" > (< / span > < span class = "n" > vet1< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "o" > !< / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "n" > count< / span > < span class = "p" > (< / span > < span class = "n" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "n" > vet1< / span > < span class = "w" > < / span > < span class = "o" > ==< / span > < span class = "w" > < / span > < span class = "n" > vet2< / span > < span class = "p" > )< / span >
< a id = "__codelineno-11-29" name = "__codelineno-11-29" href = "#__codelineno-11-29" > < / a > < span class = "w" > < / span > < span class = "k" > throw< / span > < span class = "w" > < / span > < span class = "n" > invalid_argument< / span > < span class = "p" > (< / span > < span class = "s" > " 不存在顶点" < / span > < span class = "p" > );< / span >
< a id = "__codelineno-11-30" name = "__codelineno-11-30" href = "#__codelineno-11-30" > < / a > < span class = "w" > < / span > < span class = "c1" > // 添加边 vet1 - vet2< / span >
< a id = "__codelineno-11-31" name = "__codelineno-11-31" href = "#__codelineno-11-31" > < / a > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > [< / span > < span class = "n" > vet1< / span > < span class = "p" > ].< / span > < span class = "n" > insert< / span > < span class = "p" > (< / span > < span class = "n" > vet2< / span > < span class = "p" > );< / span >
< a id = "__codelineno-11-32" name = "__codelineno-11-32" href = "#__codelineno-11-32" > < / a > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > [< / span > < span class = "n" > vet2< / span > < span class = "p" > ].< / span > < span class = "n" > insert< / span > < span class = "p" > (< / span > < span class = "n" > vet1< / span > < span class = "p" > );< / span >
< a id = "__codelineno-11-33" name = "__codelineno-11-33" href = "#__codelineno-11-33" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-11-34" name = "__codelineno-11-34" href = "#__codelineno-11-34" > < / a >
< a id = "__codelineno-11-35" name = "__codelineno-11-35" href = "#__codelineno-11-35" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 删除边 */< / span >
< a id = "__codelineno-11-36" name = "__codelineno-11-36" href = "#__codelineno-11-36" > < / a > < span class = "w" > < / span > < span class = "kt" > void< / span > < span class = "w" > < / span > < span class = "n" > removeEdge< / span > < span class = "p" > (< / span > < span class = "n" > Vertex< / span > < span class = "o" > *< / span > < span class = "w" > < / span > < span class = "n" > vet1< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > Vertex< / span > < span class = "o" > *< / span > < span class = "w" > < / span > < span class = "n" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-11-37" name = "__codelineno-11-37" href = "#__codelineno-11-37" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "o" > !< / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "n" > count< / span > < span class = "p" > (< / span > < span class = "n" > vet1< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "o" > !< / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "n" > count< / span > < span class = "p" > (< / span > < span class = "n" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "n" > vet1< / span > < span class = "w" > < / span > < span class = "o" > ==< / span > < span class = "w" > < / span > < span class = "n" > vet2< / span > < span class = "p" > )< / span >
< a id = "__codelineno-11-38" name = "__codelineno-11-38" href = "#__codelineno-11-38" > < / a > < span class = "w" > < / span > < span class = "k" > throw< / span > < span class = "w" > < / span > < span class = "n" > invalid_argument< / span > < span class = "p" > (< / span > < span class = "s" > " 不存在顶点" < / span > < span class = "p" > );< / span >
< a id = "__codelineno-11-39" name = "__codelineno-11-39" href = "#__codelineno-11-39" > < / a > < span class = "w" > < / span > < span class = "c1" > // 删除边 vet1 - vet2< / span >
< a id = "__codelineno-11-40" name = "__codelineno-11-40" href = "#__codelineno-11-40" > < / a > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > [< / span > < span class = "n" > vet1< / span > < span class = "p" > ].< / span > < span class = "n" > erase< / span > < span class = "p" > (< / span > < span class = "n" > vet2< / span > < span class = "p" > );< / span >
< a id = "__codelineno-11-41" name = "__codelineno-11-41" href = "#__codelineno-11-41" > < / a > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > [< / span > < span class = "n" > vet2< / span > < span class = "p" > ].< / span > < span class = "n" > erase< / span > < span class = "p" > (< / span > < span class = "n" > vet1< / span > < span class = "p" > );< / span >
< a id = "__codelineno-11-42" name = "__codelineno-11-42" href = "#__codelineno-11-42" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-11-43" name = "__codelineno-11-43" href = "#__codelineno-11-43" > < / a >
< a id = "__codelineno-11-44" name = "__codelineno-11-44" href = "#__codelineno-11-44" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 添加顶点 */< / span >
< a id = "__codelineno-11-45" name = "__codelineno-11-45" href = "#__codelineno-11-45" > < / a > < span class = "w" > < / span > < span class = "kt" > void< / span > < span class = "w" > < / span > < span class = "n" > addVertex< / span > < span class = "p" > (< / span > < span class = "n" > Vertex< / span > < span class = "o" > *< / span > < span class = "w" > < / span > < span class = "n" > vet< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-11-46" name = "__codelineno-11-46" href = "#__codelineno-11-46" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "n" > count< / span > < span class = "p" > (< / span > < span class = "n" > vet< / span > < span class = "p" > ))< / span > < span class = "w" > < / span > < span class = "k" > return< / span > < span class = "p" > ;< / span >
< a id = "__codelineno-11-47" name = "__codelineno-11-47" href = "#__codelineno-11-47" > < / a > < span class = "w" > < / span > < span class = "c1" > // 在邻接表中添加一个新链表(即 HashSet) < / span >
< a id = "__codelineno-11-48" name = "__codelineno-11-48" href = "#__codelineno-11-48" > < / a > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > [< / span > < span class = "n" > vet< / span > < span class = "p" > ]< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "n" > unordered_set< / span > < span class = "o" > < < / span > < span class = "n" > Vertex< / span > < span class = "o" > *> < / span > < span class = "p" > ();< / span >
< a id = "__codelineno-11-49" name = "__codelineno-11-49" href = "#__codelineno-11-49" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-11-50" name = "__codelineno-11-50" href = "#__codelineno-11-50" > < / a >
< a id = "__codelineno-11-51" name = "__codelineno-11-51" href = "#__codelineno-11-51" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 删除顶点 */< / span >
< a id = "__codelineno-11-52" name = "__codelineno-11-52" href = "#__codelineno-11-52" > < / a > < span class = "w" > < / span > < span class = "kt" > void< / span > < span class = "w" > < / span > < span class = "n" > removeVertex< / span > < span class = "p" > (< / span > < span class = "n" > Vertex< / span > < span class = "o" > *< / span > < span class = "w" > < / span > < span class = "n" > vet< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-11-53" name = "__codelineno-11-53" href = "#__codelineno-11-53" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "o" > !< / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "n" > count< / span > < span class = "p" > (< / span > < span class = "n" > vet< / span > < span class = "p" > ))< / span >
< a id = "__codelineno-11-54" name = "__codelineno-11-54" href = "#__codelineno-11-54" > < / a > < span class = "w" > < / span > < span class = "k" > throw< / span > < span class = "w" > < / span > < span class = "n" > invalid_argument< / span > < span class = "p" > (< / span > < span class = "s" > " 不存在顶点" < / span > < span class = "p" > );< / span >
< a id = "__codelineno-11-55" name = "__codelineno-11-55" href = "#__codelineno-11-55" > < / a > < span class = "w" > < / span > < span class = "c1" > // 在邻接表中删除顶点 vet 对应的链表(即 HashSet) < / span >
< a id = "__codelineno-11-56" name = "__codelineno-11-56" href = "#__codelineno-11-56" > < / a > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "n" > erase< / span > < span class = "p" > (< / span > < span class = "n" > vet< / span > < span class = "p" > );< / span >
< a id = "__codelineno-11-57" name = "__codelineno-11-57" href = "#__codelineno-11-57" > < / a > < span class = "w" > < / span > < span class = "c1" > // 遍历其它顶点的链表(即 HashSet) , 删除所有包含 vet 的边< / span >
< a id = "__codelineno-11-58" name = "__codelineno-11-58" href = "#__codelineno-11-58" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "k" > auto< / span > < span class = "o" > & < / span > < span class = "w" > < / span > < span class = "p" > [< / span > < span class = "n" > key< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > set_< / span > < span class = "p" > ]< / span > < span class = "w" > < / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-11-59" name = "__codelineno-11-59" href = "#__codelineno-11-59" > < / a > < span class = "w" > < / span > < span class = "n" > set_< / span > < span class = "p" > .< / span > < span class = "n" > erase< / span > < span class = "p" > (< / span > < span class = "n" > vet< / span > < span class = "p" > );< / span >
< a id = "__codelineno-11-60" name = "__codelineno-11-60" href = "#__codelineno-11-60" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-11-61" name = "__codelineno-11-61" href = "#__codelineno-11-61" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-11-62" name = "__codelineno-11-62" href = "#__codelineno-11-62" > < / a >
< a id = "__codelineno-11-63" name = "__codelineno-11-63" href = "#__codelineno-11-63" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 打印邻接表 */< / span >
< a id = "__codelineno-11-64" name = "__codelineno-11-64" href = "#__codelineno-11-64" > < / a > < span class = "w" > < / span > < span class = "kt" > void< / span > < span class = "w" > < / span > < span class = "n" > print< / span > < span class = "p" > ()< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-11-65" name = "__codelineno-11-65" href = "#__codelineno-11-65" > < / a > < span class = "w" > < / span > < span class = "n" > cout< / span > < span class = "w" > < / span > < span class = "o" > < < < / span > < span class = "w" > < / span > < span class = "s" > " 邻接表 =" < / span > < span class = "w" > < / span > < span class = "o" > < < < / span > < span class = "w" > < / span > < span class = "n" > endl< / span > < span class = "p" > ;< / span >
< a id = "__codelineno-11-66" name = "__codelineno-11-66" href = "#__codelineno-11-66" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "k" > auto< / span > < span class = "o" > & < / span > < span class = "w" > < / span > < span class = "p" > [< / span > < span class = "n" > key< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > value< / span > < span class = "p" > ]< / span > < span class = "w" > < / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-11-67" name = "__codelineno-11-67" href = "#__codelineno-11-67" > < / a > < span class = "w" > < / span > < span class = "n" > vector< / span > < span class = "o" > < < / span > < span class = "kt" > int< / span > < span class = "o" > > < / span > < span class = "w" > < / span > < span class = "n" > tmp< / span > < span class = "p" > ;< / span >
< a id = "__codelineno-11-68" name = "__codelineno-11-68" href = "#__codelineno-11-68" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > Vertex< / span > < span class = "o" > *< / span > < span class = "w" > < / span > < span class = "n" > vertex< / span > < span class = "w" > < / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "n" > value< / span > < span class = "p" > )< / span >
< a id = "__codelineno-11-69" name = "__codelineno-11-69" href = "#__codelineno-11-69" > < / a > < span class = "w" > < / span > < span class = "n" > tmp< / span > < span class = "p" > .< / span > < span class = "n" > push_back< / span > < span class = "p" > (< / span > < span class = "n" > vertex< / span > < span class = "o" > -> < / span > < span class = "n" > val< / span > < span class = "p" > );< / span >
< a id = "__codelineno-11-70" name = "__codelineno-11-70" href = "#__codelineno-11-70" > < / a > < span class = "w" > < / span > < span class = "n" > cout< / span > < span class = "w" > < / span > < span class = "o" > < < < / span > < span class = "w" > < / span > < span class = "n" > key< / span > < span class = "o" > -> < / span > < span class = "n" > val< / span > < span class = "w" > < / span > < span class = "o" > < < < / span > < span class = "w" > < / span > < span class = "s" > " : " < / span > < span class = "p" > ;< / span >
< a id = "__codelineno-11-71" name = "__codelineno-11-71" href = "#__codelineno-11-71" > < / a > < span class = "w" > < / span > < span class = "n" > PrintUtil< / span > < span class = "o" > ::< / span > < span class = "n" > printVector< / span > < span class = "p" > (< / span > < span class = "n" > tmp< / span > < span class = "p" > );< / span >
< a id = "__codelineno-11-72" name = "__codelineno-11-72" href = "#__codelineno-11-72" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-11-73" name = "__codelineno-11-73" href = "#__codelineno-11-73" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-11-74" name = "__codelineno-11-74" href = "#__codelineno-11-74" > < / a > < span class = "p" > };< / span >
< a id = "__codelineno-11-7" name = "__codelineno-11-7" href = "#__codelineno-11-7" > < / a > < span class = "k" > public< / span > < span class = "o" > :< / span >
< a id = "__codelineno-11-8" name = "__codelineno-11-8" href = "#__codelineno-11-8" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 构造方法 */< / span >
< a id = "__codelineno-11-9" name = "__codelineno-11-9" href = "#__codelineno-11-9" > < / a > < span class = "w" > < / span > < span class = "n" > GraphAdjList< / span > < span class = "p" > (< / span > < span class = "k" > const< / span > < span class = "w" > < / span > < span class = "n" > vector< / span > < span class = "o" > < < / span > < span class = "n" > vector< / span > < span class = "o" > < < / span > < span class = "n" > Vertex< / span > < span class = "o" > *> > & < / span > < span class = "w" > < / span > < span class = "n" > edges< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-11-10" name = "__codelineno-11-10" href = "#__codelineno-11-10" > < / a > < span class = "w" > < / span > < span class = "c1" > // 添加所有顶点和边< / span >
< a id = "__codelineno-11-11" name = "__codelineno-11-11" href = "#__codelineno-11-11" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "k" > const< / span > < span class = "w" > < / span > < span class = "n" > vector< / span > < span class = "o" > < < / span > < span class = "n" > Vertex< / span > < span class = "o" > *> & < / span > < span class = "w" > < / span > < span class = "n" > edge< / span > < span class = "w" > < / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "n" > edges< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-11-12" name = "__codelineno-11-12" href = "#__codelineno-11-12" > < / a > < span class = "w" > < / span > < span class = "n" > addVertex< / span > < span class = "p" > (< / span > < span class = "n" > edge< / span > < span class = "p" > [< / span > < span class = "mi" > 0< / span > < span class = "p" > ]);< / span >
< a id = "__codelineno-11-13" name = "__codelineno-11-13" href = "#__codelineno-11-13" > < / a > < span class = "w" > < / span > < span class = "n" > addVertex< / span > < span class = "p" > (< / span > < span class = "n" > edge< / span > < span class = "p" > [< / span > < span class = "mi" > 1< / span > < span class = "p" > ]);< / span >
< a id = "__codelineno-11-14" name = "__codelineno-11-14" href = "#__codelineno-11-14" > < / a > < span class = "w" > < / span > < span class = "n" > addEdge< / span > < span class = "p" > (< / span > < span class = "n" > edge< / span > < span class = "p" > [< / span > < span class = "mi" > 0< / span > < span class = "p" > ],< / span > < span class = "w" > < / span > < span class = "n" > edge< / span > < span class = "p" > [< / span > < span class = "mi" > 1< / span > < span class = "p" > ]);< / span >
< a id = "__codelineno-11-15" name = "__codelineno-11-15" href = "#__codelineno-11-15" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-11-16" name = "__codelineno-11-16" href = "#__codelineno-11-16" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-11-17" name = "__codelineno-11-17" href = "#__codelineno-11-17" > < / a >
< a id = "__codelineno-11-18" name = "__codelineno-11-18" href = "#__codelineno-11-18" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 获取顶点数量 */< / span >
< a id = "__codelineno-11-19" name = "__codelineno-11-19" href = "#__codelineno-11-19" > < / a > < span class = "w" > < / span > < span class = "kt" > int< / span > < span class = "w" > < / span > < span class = "n" > size< / span > < span class = "p" > ()< / span > < span class = "w" > < / span > < span class = "p" > {< / span > < span class = "w" > < / span > < span class = "k" > return< / span > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "n" > size< / span > < span class = "p" > ();< / span > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-11-20" name = "__codelineno-11-20" href = "#__codelineno-11-20" > < / a >
< a id = "__codelineno-11-21" name = "__codelineno-11-21" href = "#__codelineno-11-21" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 添加边 */< / span >
< a id = "__codelineno-11-22" name = "__codelineno-11-22" href = "#__codelineno-11-22" > < / a > < span class = "w" > < / span > < span class = "kt" > void< / span > < span class = "w" > < / span > < span class = "n" > addEdge< / span > < span class = "p" > (< / span > < span class = "n" > Vertex< / span > < span class = "o" > *< / span > < span class = "w" > < / span > < span class = "n" > vet1< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > Vertex< / span > < span class = "o" > *< / span > < span class = "w" > < / span > < span class = "n" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-11-23" name = "__codelineno-11-23" href = "#__codelineno-11-23" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "o" > !< / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "n" > count< / span > < span class = "p" > (< / span > < span class = "n" > vet1< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "o" > !< / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "n" > count< / span > < span class = "p" > (< / span > < span class = "n" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "n" > vet1< / span > < span class = "w" > < / span > < span class = "o" > ==< / span > < span class = "w" > < / span > < span class = "n" > vet2< / span > < span class = "p" > )< / span >
< a id = "__codelineno-11-24" name = "__codelineno-11-24" href = "#__codelineno-11-24" > < / a > < span class = "w" > < / span > < span class = "k" > throw< / span > < span class = "w" > < / span > < span class = "n" > invalid_argument< / span > < span class = "p" > (< / span > < span class = "s" > " 不存在顶点" < / span > < span class = "p" > );< / span >
< a id = "__codelineno-11-25" name = "__codelineno-11-25" href = "#__codelineno-11-25" > < / a > < span class = "w" > < / span > < span class = "c1" > // 添加边 vet1 - vet2< / span >
< a id = "__codelineno-11-26" name = "__codelineno-11-26" href = "#__codelineno-11-26" > < / a > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > [< / span > < span class = "n" > vet1< / span > < span class = "p" > ].< / span > < span class = "n" > insert< / span > < span class = "p" > (< / span > < span class = "n" > vet2< / span > < span class = "p" > );< / span >
< a id = "__codelineno-11-27" name = "__codelineno-11-27" href = "#__codelineno-11-27" > < / a > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > [< / span > < span class = "n" > vet2< / span > < span class = "p" > ].< / span > < span class = "n" > insert< / span > < span class = "p" > (< / span > < span class = "n" > vet1< / span > < span class = "p" > );< / span >
< a id = "__codelineno-11-28" name = "__codelineno-11-28" href = "#__codelineno-11-28" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-11-29" name = "__codelineno-11-29" href = "#__codelineno-11-29" > < / a >
< a id = "__codelineno-11-30" name = "__codelineno-11-30" href = "#__codelineno-11-30" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 删除边 */< / span >
< a id = "__codelineno-11-31" name = "__codelineno-11-31" href = "#__codelineno-11-31" > < / a > < span class = "w" > < / span > < span class = "kt" > void< / span > < span class = "w" > < / span > < span class = "n" > removeEdge< / span > < span class = "p" > (< / span > < span class = "n" > Vertex< / span > < span class = "o" > *< / span > < span class = "w" > < / span > < span class = "n" > vet1< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > Vertex< / span > < span class = "o" > *< / span > < span class = "w" > < / span > < span class = "n" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-11-32" name = "__codelineno-11-32" href = "#__codelineno-11-32" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "o" > !< / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "n" > count< / span > < span class = "p" > (< / span > < span class = "n" > vet1< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "o" > !< / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "n" > count< / span > < span class = "p" > (< / span > < span class = "n" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "n" > vet1< / span > < span class = "w" > < / span > < span class = "o" > ==< / span > < span class = "w" > < / span > < span class = "n" > vet2< / span > < span class = "p" > )< / span >
< a id = "__codelineno-11-33" name = "__codelineno-11-33" href = "#__codelineno-11-33" > < / a > < span class = "w" > < / span > < span class = "k" > throw< / span > < span class = "w" > < / span > < span class = "n" > invalid_argument< / span > < span class = "p" > (< / span > < span class = "s" > " 不存在顶点" < / span > < span class = "p" > );< / span >
< a id = "__codelineno-11-34" name = "__codelineno-11-34" href = "#__codelineno-11-34" > < / a > < span class = "w" > < / span > < span class = "c1" > // 删除边 vet1 - vet2< / span >
< a id = "__codelineno-11-35" name = "__codelineno-11-35" href = "#__codelineno-11-35" > < / a > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > [< / span > < span class = "n" > vet1< / span > < span class = "p" > ].< / span > < span class = "n" > erase< / span > < span class = "p" > (< / span > < span class = "n" > vet2< / span > < span class = "p" > );< / span >
< a id = "__codelineno-11-36" name = "__codelineno-11-36" href = "#__codelineno-11-36" > < / a > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > [< / span > < span class = "n" > vet2< / span > < span class = "p" > ].< / span > < span class = "n" > erase< / span > < span class = "p" > (< / span > < span class = "n" > vet1< / span > < span class = "p" > );< / span >
< a id = "__codelineno-11-37" name = "__codelineno-11-37" href = "#__codelineno-11-37" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-11-38" name = "__codelineno-11-38" href = "#__codelineno-11-38" > < / a >
< a id = "__codelineno-11-39" name = "__codelineno-11-39" href = "#__codelineno-11-39" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 添加顶点 */< / span >
< a id = "__codelineno-11-40" name = "__codelineno-11-40" href = "#__codelineno-11-40" > < / a > < span class = "w" > < / span > < span class = "kt" > void< / span > < span class = "w" > < / span > < span class = "n" > addVertex< / span > < span class = "p" > (< / span > < span class = "n" > Vertex< / span > < span class = "o" > *< / span > < span class = "w" > < / span > < span class = "n" > vet< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-11-41" name = "__codelineno-11-41" href = "#__codelineno-11-41" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "n" > count< / span > < span class = "p" > (< / span > < span class = "n" > vet< / span > < span class = "p" > ))< / span > < span class = "w" > < / span > < span class = "k" > return< / span > < span class = "p" > ;< / span >
< a id = "__codelineno-11-42" name = "__codelineno-11-42" href = "#__codelineno-11-42" > < / a > < span class = "w" > < / span > < span class = "c1" > // 在邻接表中添加一个新链表< / span >
< a id = "__codelineno-11-43" name = "__codelineno-11-43" href = "#__codelineno-11-43" > < / a > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > [< / span > < span class = "n" > vet< / span > < span class = "p" > ]< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "n" > unordered_set< / span > < span class = "o" > < < / span > < span class = "n" > Vertex< / span > < span class = "o" > *> < / span > < span class = "p" > ();< / span >
< a id = "__codelineno-11-44" name = "__codelineno-11-44" href = "#__codelineno-11-44" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-11-45" name = "__codelineno-11-45" href = "#__codelineno-11-45" > < / a >
< a id = "__codelineno-11-46" name = "__codelineno-11-46" href = "#__codelineno-11-46" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 删除顶点 */< / span >
< a id = "__codelineno-11-47" name = "__codelineno-11-47" href = "#__codelineno-11-47" > < / a > < span class = "w" > < / span > < span class = "kt" > void< / span > < span class = "w" > < / span > < span class = "n" > removeVertex< / span > < span class = "p" > (< / span > < span class = "n" > Vertex< / span > < span class = "o" > *< / span > < span class = "w" > < / span > < span class = "n" > vet< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-11-48" name = "__codelineno-11-48" href = "#__codelineno-11-48" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "o" > !< / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "n" > count< / span > < span class = "p" > (< / span > < span class = "n" > vet< / span > < span class = "p" > ))< / span >
< a id = "__codelineno-11-49" name = "__codelineno-11-49" href = "#__codelineno-11-49" > < / a > < span class = "w" > < / span > < span class = "k" > throw< / span > < span class = "w" > < / span > < span class = "n" > invalid_argument< / span > < span class = "p" > (< / span > < span class = "s" > " 不存在顶点" < / span > < span class = "p" > );< / span >
< a id = "__codelineno-11-50" name = "__codelineno-11-50" href = "#__codelineno-11-50" > < / a > < span class = "w" > < / span > < span class = "c1" > // 在邻接表中删除顶点 vet 对应的链表< / span >
< a id = "__codelineno-11-51" name = "__codelineno-11-51" href = "#__codelineno-11-51" > < / a > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "n" > erase< / span > < span class = "p" > (< / span > < span class = "n" > vet< / span > < span class = "p" > );< / span >
< a id = "__codelineno-11-52" name = "__codelineno-11-52" href = "#__codelineno-11-52" > < / a > < span class = "w" > < / span > < span class = "c1" > // 遍历其它顶点的链表,删除所有包含 vet 的边< / span >
< a id = "__codelineno-11-53" name = "__codelineno-11-53" href = "#__codelineno-11-53" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "k" > auto< / span > < span class = "o" > & < / span > < span class = "w" > < / span > < span class = "p" > [< / span > < span class = "n" > key< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > set_< / span > < span class = "p" > ]< / span > < span class = "w" > < / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-11-54" name = "__codelineno-11-54" href = "#__codelineno-11-54" > < / a > < span class = "w" > < / span > < span class = "n" > set_< / span > < span class = "p" > .< / span > < span class = "n" > erase< / span > < span class = "p" > (< / span > < span class = "n" > vet< / span > < span class = "p" > );< / span >
< a id = "__codelineno-11-55" name = "__codelineno-11-55" href = "#__codelineno-11-55" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-11-56" name = "__codelineno-11-56" href = "#__codelineno-11-56" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-11-57" name = "__codelineno-11-57" href = "#__codelineno-11-57" > < / a >
< a id = "__codelineno-11-58" name = "__codelineno-11-58" href = "#__codelineno-11-58" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 打印邻接表 */< / span >
< a id = "__codelineno-11-59" name = "__codelineno-11-59" href = "#__codelineno-11-59" > < / a > < span class = "w" > < / span > < span class = "kt" > void< / span > < span class = "w" > < / span > < span class = "n" > print< / span > < span class = "p" > ()< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-11-60" name = "__codelineno-11-60" href = "#__codelineno-11-60" > < / a > < span class = "w" > < / span > < span class = "n" > cout< / span > < span class = "w" > < / span > < span class = "o" > < < < / span > < span class = "w" > < / span > < span class = "s" > " 邻接表 =" < / span > < span class = "w" > < / span > < span class = "o" > < < < / span > < span class = "w" > < / span > < span class = "n" > endl< / span > < span class = "p" > ;< / span >
< a id = "__codelineno-11-61" name = "__codelineno-11-61" href = "#__codelineno-11-61" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "k" > auto< / span > < span class = "o" > & < / span > < span class = "w" > < / span > < span class = "p" > [< / span > < span class = "n" > key< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > value< / span > < span class = "p" > ]< / span > < span class = "w" > < / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "n" > adjList< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-11-62" name = "__codelineno-11-62" href = "#__codelineno-11-62" > < / a > < span class = "w" > < / span > < span class = "n" > vector< / span > < span class = "o" > < < / span > < span class = "kt" > int< / span > < span class = "o" > > < / span > < span class = "w" > < / span > < span class = "n" > tmp< / span > < span class = "p" > ;< / span >
< a id = "__codelineno-11-63" name = "__codelineno-11-63" href = "#__codelineno-11-63" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > Vertex< / span > < span class = "o" > *< / span > < span class = "w" > < / span > < span class = "n" > vertex< / span > < span class = "w" > < / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "n" > value< / span > < span class = "p" > )< / span >
< a id = "__codelineno-11-64" name = "__codelineno-11-64" href = "#__codelineno-11-64" > < / a > < span class = "w" > < / span > < span class = "n" > tmp< / span > < span class = "p" > .< / span > < span class = "n" > push_back< / span > < span class = "p" > (< / span > < span class = "n" > vertex< / span > < span class = "o" > -> < / span > < span class = "n" > val< / span > < span class = "p" > );< / span >
< a id = "__codelineno-11-65" name = "__codelineno-11-65" href = "#__codelineno-11-65" > < / a > < span class = "w" > < / span > < span class = "n" > cout< / span > < span class = "w" > < / span > < span class = "o" > < < < / span > < span class = "w" > < / span > < span class = "n" > key< / span > < span class = "o" > -> < / span > < span class = "n" > val< / span > < span class = "w" > < / span > < span class = "o" > < < < / span > < span class = "w" > < / span > < span class = "s" > " : " < / span > < span class = "p" > ;< / span >
< a id = "__codelineno-11-66" name = "__codelineno-11-66" href = "#__codelineno-11-66" > < / a > < span class = "w" > < / span > < span class = "n" > PrintUtil< / span > < span class = "o" > ::< / span > < span class = "n" > printVector< / span > < span class = "p" > (< / span > < span class = "n" > tmp< / span > < span class = "p" > );< / span >
< a id = "__codelineno-11-67" name = "__codelineno-11-67" href = "#__codelineno-11-67" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-11-68" name = "__codelineno-11-68" href = "#__codelineno-11-68" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-11-69" name = "__codelineno-11-69" href = "#__codelineno-11-69" > < / a > < span class = "p" > };< / span >
< / code > < / pre > < / div >
< / div >
< div class = "tabbed-block" >
< div class = "highlight" > < span class = "filename" > graph_adjacency_list.py< / span > < pre > < span > < / span > < code > < a id = "__codelineno-12-1" name = "__codelineno-12-1" href = "#__codelineno-12-1" > < / a > < span class = "p" > [< / span > < span class = "n" > class< / span > < span class = "p" > ]{< / span > < span class = "n" > Vertex< / span > < span class = "p" > }< / span > < span class = "o" > -< / span > < span class = "p" > [< / span > < span class = "n" > func< / span > < span class = "p" > ]{}< / span >
< a id = "__codelineno-12-2" name = "__codelineno-12-2" href = "#__codelineno-12-2" > < / a >
< a id = "__codelineno-12-3" name = "__codelineno-12-3" href = "#__codelineno-12-3" > < / a > < span class = "p" > [< / span > < span class = "n" > class< / span > < span class = "p" > ]{< / span > < span class = "n" > GraphAdjList< / span > < span class = "p" > }< / span > < span class = "o" > -< / span > < span class = "p" > [< / span > < span class = "n" > func< / span > < span class = "p" > ]{}< / span >
< div class = "highlight" > < span class = "filename" > graph_adjacency_list.py< / span > < pre > < span > < / span > < code > < a id = "__codelineno-12-1" name = "__codelineno-12-1" href = "#__codelineno-12-1" > < / a > < span class = "p" > [< / span > < span class = "n" > class< / span > < span class = "p" > ]{< / span > < span class = "n" > GraphAdjList< / span > < span class = "p" > }< / span > < span class = "o" > -< / span > < span class = "p" > [< / span > < span class = "n" > func< / span > < span class = "p" > ]{}< / span >
< / code > < / pre > < / div >
< / div >
< div class = "tabbed-block" >
< div class = "highlight" > < span class = "filename" > graph_adjacency_list.go< / span > < pre > < span > < / span > < code > < a id = "__codelineno-13-1" name = "__codelineno-13-1" href = "#__codelineno-13-1" > < / a > < span class = "cm" > /* 顶点 类 */< / span >
< a id = "__codelineno-13-2" name = "__codelineno-13-2" href = "#__codelineno-13-2" > < / a > < span class = "kd" > type< / span > < span class = "w" > < / span > < span class = "nx" > vertex < / span > < span class = "w" > < / span > < span class = "kd" > struct< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-13-3" name = "__codelineno-13-3" href = "#__codelineno-13-3" > < / a > < span class = "w" > < / span > < span class = " nx"> val< / span > < span class = "w" > < / span > < span class = "kt" > int < / span >
< a id = "__codelineno-13-4" name = "__codelineno-13-4" href = "#__codelineno-13-4" > < / a > < span class = " p"> } < / span >
< a id = "__codelineno-13-5" name = "__codelineno-13-5" href = "#__codelineno-13-5" > < / a >
< a id = "__codelineno-13-6" name = "__codelineno-13-6" href = "#__codelineno-13-6" > < / a > < span class = " cm"> /* 构造方法 */ < / span >
< a id = "__codelineno-13-7" name = "__codelineno-13-7" href = "#__codelineno-13-7" > < / a > < span class = "kd" > func< / span > < span class = "w" > < / span > < span class = "nx" > newVertex< / span > < span class = "p" > (< / span > < span class = "nx" > val< / span > < span class = "w" > < / span > < span class = "kt" > int< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "nx" > vertex< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-13-8" name = "__codelineno-13-8" href = "#__codelineno-13-8" > < / a > < span class = " w"> < / span > < span class = "k" > return< / span > < span class = "w" > < / span > < span class = "nx" > vertex< / span > < span class = "p" > { < / span >
< a id = "__codelineno-13-9" name = "__codelineno-13-9" href = "#__codelineno-13-9" > < / a > < span class = " w"> < / span > < span class = "nx" > val < / span > < span class = "p" > : < / span > < span class = "w" > < / span > < span class = " nx"> val < / span > < span class = "p" > , < / span >
< a id = "__codelineno-13-10" name = "__codelineno-13-10" href = "#__codelineno-13-10" > < / a > < span class = "w" > < / span > < span class = " p"> } < / span >
< a id = "__codelineno-13-11" name = "__codelineno-13-11" href = "#__codelineno-13-11" > < / a > < span class = " p"> }< / span >
< a id = "__codelineno-13-12" name = "__codelineno-13-12" href = "#__codelineno-13-12" > < / a >
< a id = "__codelineno-13-13" name = "__codelineno-13-13" href = "#__codelineno-13-13" > < / a > < span class = " cm"> /* 基于邻接表实现的无向图类 */ < / span >
< a id = "__codelineno-13-14" name = "__codelineno-13-14" href = "#__codelineno-13-14" > < / a > < span class = " kd"> type < / span > < span class = "w" > < / span > < span class = "nx" > graphAdjList < / span > < span class = "w" > < / span > < span class = "k d"> struct < / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-13-15" name = "__codelineno-13-15" href = "#__codelineno-13-15" > < / a > < span class = "w" > < / span > < span class = " c1"> // 请注意, vertices 和 adjList 中存储的都是 Vertex 对象 < / span >
< a id = "__codelineno-13-16" name = "__codelineno-13-16" href = "#__codelineno-13-16" > < / a > < span class = "w" > < / span > < span class = " c1"> // 邻接表(使用哈希表实现), 使用哈希表模拟集合 < / span >
< a id = "__codelineno-13-17" name = "__codelineno-13-17" href = "#__codelineno-13-17" > < / a > < span class = "w" > < / span > < span class = "nx" > adjList < / span > < span class = " w"> < / span > < span class = " kd"> map < / span > < span class = "p" > [ < / span > < span class = "nx" > vertex < / span > < span class = "p" > ] < / span > < span class = " kd"> map < / span > < span class = " p"> [ < / span > < span class = "nx" > vertex < / span > < span class = "p" > ] < / span > < span class = " kd"> struct < / span > < span class = "p" > {} < / span >
< a id = "__codelineno-13-18" name = "__codelineno-13-18" href = "#__codelineno-13-18" > < / a > < span class = " p"> }< / span >
< a id = "__codelineno-13-19" name = "__codelineno-13-19" href = "#__codelineno-13-19" > < / a >
< a id = "__codelineno-13-20" name = "__codelineno-13-20" href = "#__codelineno-13-20" > < / a > < span class = " cm"> /* 构造方法 */ < / span >
< a id = "__codelineno-13-21" name = "__codelineno-13-21" href = "#__codelineno-13-21" > < / a > < span class = "kd" > func< / span > < span class = "w" > < / span > < span class = "nx" > newGraphAdjList< / span > < span class = "p" > (< / span > < span class = "nx" > edges< / span > < span class = "w" > < / span > < span class = "p" > [][]< / span > < span class = "nx" > vertex< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > *< / span > < span class = "nx" > graphAdjList< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-13-22" name = "__codelineno-13-22" href = "#__codelineno-13-22" > < / a > < span class = " w"> < / span > < span class = "nx" > g< / span > < span class = "w" > < / span > < span class = "o" > :=< / span > < span class = "w" > < / span > < span class = "o" > & < / span > < span class = "nx" > graphAdjList< / span > < span class = "p" > { < / span >
< a id = "__codelineno-13-23" name = "__codelineno-13-23" href = "#__codelineno-13-23" > < / a > < span class = " w"> < / span > < span class = " nx"> adjList < / span > < span class = "p" > : < / span > < span class = " w"> < / span > < span class = " nb"> make < / span > < span class = " p"> ( < / span > < span class = " kd"> map < / span > < span class = "p" > [ < / span > < span class = " nx"> vertex< / span > < span class = "p" > ] < / span > < span class = " kd"> map < / span > < span class = "p" > [ < / span > < span class = " nx"> vertex < / span > < span class = " p"> ] < / span > < span class = " kd"> struct < / span > < span class = "p" > {}), < / span >
< a id = "__codelineno-13-24" name = "__codelineno-13-24" href = "#__codelineno-13-24" > < / a > < span class = "w" > < / span > < span class = " p"> } < / span >
< a id = "__codelineno-13-25" name = "__codelineno-13-25" href = "#__codelineno-13-25" > < / a > < span class = " w"> < / span > < span class = "c1" > // 添加所有顶点和边 < / span >
< a id = "__codelineno-13-26" name = "__codelineno-13-26" href = "#__codelineno-13-26" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "nx" > _< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > edge< / span > < span class = "w" > < / span > < span class = "o" > :=< / span > < span class = "w" > < / span > < span class = "k" > range< / span > < span class = "w" > < / span > < span class = "nx" > edges< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-13-27" name = "__codelineno-13-27" href = "#__codelineno-13-27" > < / a > < span class = " w"> < / span > < span class = "nx" > g< / span > < span class = "p" > .< / span > < span class = "nx" > addVertex< / span > < span class = "p" > (< / span > < span class = "nx" > edge< / span > < span class = "p" > [< / span > < span class = "mi" > 0< / span > < span class = "p" > ]) < / span >
< a id = "__codelineno-13-28" name = "__codelineno-13-28" href = "#__codelineno-13-28" > < / a > < span class = " w"> < / span > < span class = "nx" > g< / span > < span class = "p" > . < / span > < span class = "nx" > addV ertex< / span > < span class = "p" > ( < / span > < span class = "nx" > edge < / span > < span class = "p" > [ < / span > < span class = " mi"> 1 < / span > < span class = "p" > ]) < / span >
< a id = "__codelineno-13-29" name = "__codelineno-13-29" href = "#__codelineno-13-29" > < / a > < span class = "w" > < / span > < span class = "nx" > g < / span > < span class = "p" > . < / span > < span class = " nx"> addEdge < / span > < span class = " p"> ( < / span > < span class = " nx"> edge < / span > < span class = " p"> [ < / span > < span class = " mi"> 0 < / span > < span class = " p"> ], < / span > < span class = " w"> < / span > < span class = "nx" > edge < / span > < span class = "p" > [< / span > < span class = " mi"> 1< / span > < span class = "p" > ]) < / span >
< a id = "__codelineno-13-30" name = "__codelineno-13-30" href = "#__codelineno-13-30" > < / a > < span class = "w" > < / span > < span class = " p"> } < / span >
< a id = "__codelineno-13-31" name = "__codelineno-13-31" href = "#__codelineno-13-31" > < / a > < span class = "w" > < / span > < span class = "k" > return < / span > < span class = "w" > < / span > < span class = "nx" > g < / span >
< a id = "__codelineno-13-32" name = "__codelineno-13-32" href = "#__codelineno-13-32" > < / a > < span class = " p"> } < / span >
< a id = "__codelineno-13-33" name = "__codelineno-13-33" href = "#__codelineno-13-33" > < / a >
< a id = "__codelineno-13-34" name = "__codelineno-13-34" href = "#__codelineno-13-34" > < / a > < span class = " cm"> /* 获取顶点数量 */ < / span >
< a id = "__codelineno-13-35" name = "__codelineno-13-35" href = "#__codelineno-13-35" > < / a > < span class = " kd"> func < / span > < span class = " w"> < / span > < span class = "p" > ( < / span > < span class = "nx" > g< / span > < span class = "w" > < / span > < span class = " o"> * < / span > < span class = "nx" > graphAdjList < / span > < span class = "p" > ) < / span > < span class = " w"> < / span > < span class = " nx"> size< / span > < span class = "p" > () < / span > < span class = "w" > < / span > < span class = " kt"> int < / span > < span class = " w"> < / span > < span class = "p" > {< / span >
< a id = "__codelineno-13-36" name = "__codelineno-13-36" href = "#__codelineno-13-36" > < / a > < span class = "w" > < / span > < span class = " k"> return < / span > < span class = " w"> < / span > < span class = "n b"> len < / span > < span class = "p" > ( < / span > < span class = "nx" > g < / span > < span class = "p" > . < / span > < span class = " nx"> adjLis t< / span > < span class = "p" > ) < / span >
< div class = "highlight" > < span class = "filename" > graph_adjacency_list.go< / span > < pre > < span > < / span > < code > < a id = "__codelineno-13-1" name = "__codelineno-13-1" href = "#__codelineno-13-1" > < / a > < span class = "cm" > /* 基于邻接表实现的无向图 类 */< / span >
< a id = "__codelineno-13-2" name = "__codelineno-13-2" href = "#__codelineno-13-2" > < / a > < span class = "kd" > type< / span > < span class = "w" > < / span > < span class = "nx" > graphAdjList < / span > < span class = "w" > < / span > < span class = "kd" > struct< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-13-3" name = "__codelineno-13-3" href = "#__codelineno-13-3" > < / a > < span class = "w" > < / span > < span class = " c1"> // 邻接表,使用哈希表来代替链表,以提升删除边、删除顶点的效率 < / span >
< a id = "__codelineno-13-4" name = "__codelineno-13-4" href = "#__codelineno-13-4" > < / a > < span class = " w"> < / span > < span class = "c1" > // 请注意, adjList 中的元素是 Vertex 对象 < / span >
< a id = "__codelineno-13-5" name = "__codelineno-13-5" href = "#__codelineno-13-5" > < / a > < span class = "w" > < / span > < span class = "nx" > adjList< / span > < span class = "w" > < / span > < span class = "kd" > map< / span > < span class = "p" > [< / span > < span class = "nx" > vertex< / span > < span class = "p" > ]< / span > < span class = "kd" > map< / span > < span class = "p" > [< / span > < span class = "nx" > vertex< / span > < span class = "p" > ]< / span > < span class = "kd" > struct< / span > < span class = "p" > {}< / span >
< a id = "__codelineno-13-6" name = "__codelineno-13-6" href = "#__codelineno-13-6" > < / a > < span class = " p"> } < / span >
< a id = "__codelineno-13-7" name = "__codelineno-13-7" href = "#__codelineno-13-7" > < / a >
< a id = "__codelineno-13-8" name = "__codelineno-13-8" href = "#__codelineno-13-8" > < / a > < span class = " cm"> /* 构造方法 */ < / span >
< a id = "__codelineno-13-9" name = "__codelineno-13-9" href = "#__codelineno-13-9" > < / a > < span class = " kd"> func< / span > < span class = "w" > < / span > < span class = "nx" > newGraphAdjList< / span > < span class = "p" > (< / span > < span class = "nx" > edges< / span > < span class = "w" > < / span > < span class = "p" > [][] < / span > < span class = "nx" > vertex < / span > < span class = "p" > ) < / span > < span class = "w" > < / span > < span class = " o"> *< / span > < span class = "nx" > graphAdjList< / span > < span class = "w" > < / span > < span class = "p" > { < / span >
< a id = "__codelineno-13-10" name = "__codelineno-13-10" href = "#__codelineno-13-10" > < / a > < span class = "w" > < / span > < span class = " nx"> g< / span > < span class = "w" > < / span > < span class = "o" > :=< / span > < span class = "w" > < / span > < span class = "o" > & < / span > < span class = "nx" > graphAdjList< / span > < span class = "p" > { < / span >
< a id = "__codelineno-13-11" name = "__codelineno-13-11" href = "#__codelineno-13-11" > < / a > < span class = " w"> < / span > < span class = "nx" > adjList< / span > < span class = " p"> :< / span > < span class = "w" > < / span > < span class = "nb" > make< / span > < span class = "p" > (< / span > < span class = "kd" > map< / span > < span class = "p" > [< / span > < span class = "nx" > vertex< / span > < span class = "p" > ]< / span > < span class = "kd" > map< / span > < span class = "p" > [< / span > < span class = "nx" > vertex< / span > < span class = "p" > ]< / span > < span class = "kd" > struct< / span > < span class = "p" > { }), < / span >
< a id = "__codelineno-13-12" name = "__codelineno-13-12" href = "#__codelineno-13-12" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-13-13" name = "__codelineno-13-13" href = "#__codelineno-13-13" > < / a > < span class = " w"> < / span > < span class = "c1" > // 添加所有顶点和边 < / span >
< a id = "__codelineno-13-14" name = "__codelineno-13-14" href = "#__codelineno-13-14" > < / a > < span class = " w"> < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "nx" > _< / span > < span class = "p" > , < / span > < span class = "w" > < / span > < span class = "nx" > edge< / span > < span class = "w" > < / span > < span class = "o" > := < / span > < span class = "w" > < / span > < span class = "k "> range< / span > < span class = "w" > < / span > < span class = "nx" > edges < / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-13-15" name = "__codelineno-13-15" href = "#__codelineno-13-15" > < / a > < span class = "w" > < / span > < span class = " nx"> g< / span > < span class = "p" > .< / span > < span class = "nx" > addVertex< / span > < span class = "p" > (< / span > < span class = "nx" > edge< / span > < span class = "p" > [< / span > < span class = "mi" > 0< / span > < span class = "p" > ]) < / span >
< a id = "__codelineno-13-16" name = "__codelineno-13-16" href = "#__codelineno-13-16" > < / a > < span class = "w" > < / span > < span class = " nx"> g< / span > < span class = "p" > .< / span > < span class = "nx" > addVertex< / span > < span class = "p" > (< / span > < span class = "nx" > edge< / span > < span class = "p" > [< / span > < span class = "mi" > 1< / span > < span class = "p" > ]) < / span >
< a id = "__codelineno-13-17" name = "__codelineno-13-17" href = "#__codelineno-13-17" > < / a > < span class = "w" > < / span > < span class = "nx" > g < / span > < span class = " p"> . < / span > < span class = " nx"> addEdge < / span > < span class = "p" > ( < / span > < span class = "nx" > edge < / span > < span class = "p" > [ < / span > < span class = " mi"> 0< / span > < span class = "p" > ], < / span > < span class = " w"> < / span > < span class = "nx" > edge < / span > < span class = "p" > [ < / span > < span class = " mi"> 1 < / span > < span class = "p" > ]) < / span >
< a id = "__codelineno-13-18" name = "__codelineno-13-18" href = "#__codelineno-13-18" > < / a > < span class = " w"> < / span > < span class = " p"> }< / span >
< a id = "__codelineno-13-19" name = "__codelineno-13-19" href = "#__codelineno-13-19" > < / a > < span class = "w" > < / span > < span class = "k" > return< / span > < span class = "w" > < / span > < span class = "nx" > g< / span >
< a id = "__codelineno-13-20" name = "__codelineno-13-20" href = "#__codelineno-13-20" > < / a > < span class = " p"> } < / span >
< a id = "__codelineno-13-21" name = "__codelineno-13-21" href = "#__codelineno-13-21" > < / a >
< a id = "__codelineno-13-22" name = "__codelineno-13-22" href = "#__codelineno-13-22" > < / a > < span class = " cm"> /* 获取顶点数量 */ < / span >
< a id = "__codelineno-13-23" name = "__codelineno-13-23" href = "#__codelineno-13-23" > < / a > < span class = " kd"> func < / span > < span class = " w"> < / span > < span class = "p" > ( < / span > < span class = " nx"> g < / span > < span class = " w"> < / span > < span class = " o"> * < / span > < span class = " nx"> graphAdjList < / span > < span class = "p" > ) < / span > < span class = " w"> < / span > < span class = " nx"> size < / span > < span class = "p" > () < / span > < span class = " w"> < / span > < span class = " kt"> int < / span > < span class = " w"> < / span > < span class = "p" > {< / span >
< a id = "__codelineno-13-24" name = "__codelineno-13-24" href = "#__codelineno-13-24" > < / a > < span class = "w" > < / span > < span class = " k"> return< / span > < span class = "w" > < / span > < span class = "nb" > len< / span > < span class = "p" > (< / span > < span class = "nx" > g< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > ) < / span >
< a id = "__codelineno-13-25" name = "__codelineno-13-25" href = "#__codelineno-13-25" > < / a > < span class = " p"> } < / span >
< a id = "__codelineno-13-26" name = "__codelineno-13-26" href = "#__codelineno-13-26" > < / a >
< a id = "__codelineno-13-27" name = "__codelineno-13-27" href = "#__codelineno-13-27" > < / a > < span class = " cm"> /* 添加边 */ < / span >
< a id = "__codelineno-13-28" name = "__codelineno-13-28" href = "#__codelineno-13-28" > < / a > < span class = " kd"> func< / span > < span class = " w"> < / span > < span class = "p" > (< / span > < span class = "nx" > g< / span > < span class = "w" > < / span > < span class = "o" > *< / span > < span class = "nx" > graphAdjList< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "nx" > addEd ge < / span > < span class = "p" > ( < / span > < span class = "nx" > vet1< / span > < span class = "w" > < / span > < span class = "nx" > v ertex< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > vet2< / span > < span class = "w" > < / span > < span class = "nx" > vertex < / span > < span class = "p" > ) < / span > < span class = " w"> < / span > < span class = "p" > { < / span >
< a id = "__codelineno-13-29" name = "__codelineno-13-29" href = "#__codelineno-13-29" > < / a > < span class = "w" > < / span > < span class = "nx" > _ < / span > < span class = "p" > , < / span > < span class = " w"> < / span > < span class = " nx"> ok1 < / span > < span class = " w"> < / span > < span class = " o"> := < / span > < span class = " w"> < / span > < span class = " nx"> g < / span > < span class = " p"> . < / span > < span class = "nx" > adjList < / span > < span class = "p" > [< / span > < span class = " nx"> vet 1< / span > < span class = "p" > ]< / span >
< a id = "__codelineno-13-30" name = "__codelineno-13-30" href = "#__codelineno-13-30" > < / a > < span class = "w" > < / span > < span class = " nx"> _< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > ok2< / span > < span class = "w" > < / span > < span class = "o" > :=< / span > < span class = "w" > < / span > < span class = "nx" > g< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > [< / span > < span class = "nx" > vet2< / span > < span class = "p" > ] < / span >
< a id = "__codelineno-13-31" name = "__codelineno-13-31" href = "#__codelineno-13-31" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > !< / span > < span class = "nx" > ok1< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "p" > !< / span > < span class = "nx" > ok2< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "nx" > vet1< / span > < span class = "w" > < / span > < span class = "o" > == < / span > < span class = "w" > < / span > < span class = "nx" > vet2< / span > < span class = "w" > < / span > < span class = "p" > { < / span >
< a id = "__codelineno-13-32" name = "__codelineno-13-32" href = "#__codelineno-13-32" > < / a > < span class = " w"> < / span > < span class = "nb" > panic< / span > < span class = "p" > (< / span > < span class = "s" > " error" < / span > < span class = "p" > ) < / span >
< a id = "__codelineno-13-33" name = "__codelineno-13-33" href = "#__codelineno-13-33" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-13-34" name = "__codelineno-13-34" href = "#__codelineno-13-34" > < / a > < span class = " w"> < / span > < span class = "c1" > // 添加边 vet1 - vet2, 添加匿名 struct{}, < / span >
< a id = "__codelineno-13-35" name = "__codelineno-13-35" href = "#__codelineno-13-35" > < / a > < span class = " w"> < / span > < span class = " nx"> g < / span > < span class = "p" > . < / span > < span class = "nx" > adjList < / span > < span class = " p"> [ < / span > < span class = "nx" > vet1 < / span > < span class = "p" > ][ < / span > < span class = " nx"> vet2 < / span > < span class = " p"> ] < / span > < span class = "w" > < / span > < span class = " p"> =< / span > < span class = "w" > < / span > < span class = " kd"> struct < / span > < span class = "p" > {}{} < / span >
< a id = "__codelineno-13-36" name = "__codelineno-13-36" href = "#__codelineno-13-36" > < / a > < span class = "w" > < / span > < span class = " nx"> g< / span > < span class = "p" > . < / span > < span class = " nx"> adjList< / span > < span class = "p" > [ < / span > < span class = "n x"> vet2 < / span > < span class = "p" > ][ < / span > < span class = "nx" > vet1 < / span > < span class = "p" > ] < / span > < span class = " w"> < / span > < span class = "p" > =< / span > < span class = "w" > < / span > < span class = "kd" > struc t< / span > < span class = "p" > {}{} < / span >
< a id = "__codelineno-13-37" name = "__codelineno-13-37" href = "#__codelineno-13-37" > < / a > < span class = "p" > }< / span >
< a id = "__codelineno-13-38" name = "__codelineno-13-38" href = "#__codelineno-13-38" > < / a >
< a id = "__codelineno-13-39" name = "__codelineno-13-39" href = "#__codelineno-13-39" > < / a > < span class = "cm" > /* 添加 边 */< / span >
< a id = "__codelineno-13-40" name = "__codelineno-13-40" href = "#__codelineno-13-40" > < / a > < span class = "kd" > func< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "nx" > g< / span > < span class = "w" > < / span > < span class = "o" > *< / span > < span class = "nx" > graphAdjList< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "nx" > add Edge< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "w" > < / span > < span class = "nx" > vertex< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > vet2< / span > < span class = "w" > < / span > < span class = "nx" > vertex< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-13-39" name = "__codelineno-13-39" href = "#__codelineno-13-39" > < / a > < span class = "cm" > /* 删除 边 */< / span >
< a id = "__codelineno-13-40" name = "__codelineno-13-40" href = "#__codelineno-13-40" > < / a > < span class = "kd" > func< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "nx" > g< / span > < span class = "w" > < / span > < span class = "o" > *< / span > < span class = "nx" > graphAdjList< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "nx" > remove Edge< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "w" > < / span > < span class = "nx" > vertex< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > vet2< / span > < span class = "w" > < / span > < span class = "nx" > vertex< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-13-41" name = "__codelineno-13-41" href = "#__codelineno-13-41" > < / a > < span class = "w" > < / span > < span class = "nx" > _< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > ok1< / span > < span class = "w" > < / span > < span class = "o" > :=< / span > < span class = "w" > < / span > < span class = "nx" > g< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > [< / span > < span class = "nx" > vet1< / span > < span class = "p" > ]< / span >
< a id = "__codelineno-13-42" name = "__codelineno-13-42" href = "#__codelineno-13-42" > < / a > < span class = "w" > < / span > < span class = "nx" > _< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > ok2< / span > < span class = "w" > < / span > < span class = "o" > :=< / span > < span class = "w" > < / span > < span class = "nx" > g< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > [< / span > < span class = "nx" > vet2< / span > < span class = "p" > ]< / span >
< a id = "__codelineno-13-43" name = "__codelineno-13-43" href = "#__codelineno-13-43" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > !< / span > < span class = "nx" > ok1< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "p" > !< / span > < span class = "nx" > ok2< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "nx" > vet1< / span > < span class = "w" > < / span > < span class = "o" > ==< / span > < span class = "w" > < / span > < span class = "nx" > vet2< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-13-44" name = "__codelineno-13-44" href = "#__codelineno-13-44" > < / a > < span class = "w" > < / span > < span class = "nb" > panic< / span > < span class = "p" > (< / span > < span class = "s" > " error" < / span > < span class = "p" > )< / span >
< a id = "__codelineno-13-45" name = "__codelineno-13-45" href = "#__codelineno-13-45" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-13-46" name = "__codelineno-13-46" href = "#__codelineno-13-46" > < / a > < span class = "w" > < / span > < span class = "c1" > // 添加边 vet1 - vet2, 添加匿名 struct{}, < / span >
< a id = "__codelineno-13-47" name = "__codelineno-13-47" href = "#__codelineno-13-47" > < / a > < span class = "w" > < / span > < span class = "n x"> g< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > [< / span > < span class = "nx" > vet1< / span > < span class = "p" > ][< / span > < span class = "nx" > vet2< / span > < span class = "p" > ] < / span > < span class = "w" > < / span > < span class = " p"> =< / span > < span class = "w" > < / span > < span class = "kd" > struct < / span > < span class = "p" > {}{} < / span >
< a id = "__codelineno-13-48" name = "__codelineno-13-48" href = "#__codelineno-13-48" > < / a > < span class = "w" > < / span > < span class = "n x"> g< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > [< / span > < span class = "nx" > vet2< / span > < span class = "p" > ][< / span > < span class = "nx" > vet1< / span > < span class = "p" > ] < / span > < span class = "w" > < / span > < span class = " p"> =< / span > < span class = "w" > < / span > < span class = "kd" > struct < / span > < span class = "p" > {}{} < / span >
< a id = "__codelineno-13-46" name = "__codelineno-13-46" href = "#__codelineno-13-46" > < / a > < span class = "w" > < / span > < span class = "c1" > // 删除边 vet1 - vet2, 借助 delete 来删除 map 中的键 < / span >
< a id = "__codelineno-13-47" name = "__codelineno-13-47" href = "#__codelineno-13-47" > < / a > < span class = "w" > < / span > < span class = "n b"> delete< / span > < span class = "p" > (< / span > < span class = "n x"> g< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > [< / span > < span class = "nx" > vet1< / span > < span class = "p" > ], < / span > < span class = "w" > < / span > < span class = " nx"> vet2 < / span > < span class = "p" > ) < / span >
< a id = "__codelineno-13-48" name = "__codelineno-13-48" href = "#__codelineno-13-48" > < / a > < span class = "w" > < / span > < span class = "n b"> delete< / span > < span class = "p" > (< / span > < span class = "n x"> g< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > [< / span > < span class = "nx" > vet2< / span > < span class = "p" > ], < / span > < span class = "w" > < / span > < span class = " nx"> vet1 < / span > < span class = "p" > ) < / span >
< a id = "__codelineno-13-49" name = "__codelineno-13-49" href = "#__codelineno-13-49" > < / a > < span class = "p" > }< / span >
< a id = "__codelineno-13-50" name = "__codelineno-13-50" href = "#__codelineno-13-50" > < / a >
< a id = "__codelineno-13-51" name = "__codelineno-13-51" href = "#__codelineno-13-51" > < / a > < span class = "cm" > /* 删除边 */< / span >
< a id = "__codelineno-13-52" name = "__codelineno-13-52" href = "#__codelineno-13-52" > < / a > < span class = "kd" > func< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "nx" > g< / span > < span class = "w" > < / span > < span class = "o" > *< / span > < span class = "nx" > graphAdjList< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "nx" > removeEdge< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "w" > < / span > < span class = "nx" > vertex< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > vet2< / span > < span class = "w" > < / span > < span class = "nx" > vertex< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-13-53" name = "__codelineno-13-53" href = "#__codelineno-13-53" > < / a > < span class = "w" > < / span > < span class = "nx" > _< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > ok1< / span > < span class = "w" > < / span > < span class = "o" > :=< / span > < span class = "w" > < / span > < span class = "nx" > g< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > [< / span > < span class = "nx" > vet1< / span > < span class = "p" > ]< / span >
< a id = "__codelineno-13-54" name = "__codelineno-13-54" href = "#__codelineno-13-54" > < / a > < span class = "w" > < / span > < span class = "nx" > _< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > ok2< / span > < span class = "w" > < / span > < span class = "o" > :=< / span > < span class = "w" > < / span > < span class = "nx" > g< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > [< / span > < span class = "nx" > vet2< / span > < span class = "p" > ]< / span >
< a id = "__codelineno-13-55" name = "__codelineno-13-55" href = "#__codelineno-13-55" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > !< / span > < span class = "nx" > ok1< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "p" > !< / span > < span class = "nx" > ok2< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "nx" > vet1< / span > < span class = "w" > < / span > < span class = "o" > ==< / span > < span class = "w" > < / span > < span class = "nx" > vet2< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-13-56" name = "__codelineno-13-56" href = "#__codelineno-13-56" > < / a > < span class = "w" > < / span > < span class = "nb" > panic< / span > < span class = "p" > (< / span > < span class = "s" > " error" < / span > < span class = "p" > )< / span >
< a id = "__codelineno-13-57" name = "__codelineno-13-57" href = "#__codelineno-13-57" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-13-58" name = "__codelineno-13-58" href = "#__codelineno-13-58" > < / a > < span class = "w" > < / span > < span class = "c1" > // 删除边 vet1 - vet2, 借助 delete 来删除 map 中的键< / span >
< a id = "__codelineno-13-59" name = "__codelineno-13-59" href = "#__codelineno-13-59" > < / a > < span class = "w" > < / span > < span class = "nb" > delete< / span > < span class = "p" > (< / span > < span class = "nx" > g< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > [< / span > < span class = "nx" > vet1< / span > < span class = "p" > ],< / span > < span class = "w" > < / span > < span class = "nx" > vet2< / span > < span class = "p" > )< / span >
< a id = "__codelineno-13-60" name = "__codelineno-13-60" href = "#__codelineno-13-60" > < / a > < span class = "w" > < / span > < span class = "nb" > delete< / span > < span class = "p" > (< / span > < span class = "nx" > g< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > [< / span > < span class = "nx" > vet2< / span > < span class = "p" > ],< / span > < span class = "w" > < / span > < span class = "nx" > vet1< / span > < span class = "p" > )< / span >
< a id = "__codelineno-13-61" name = "__codelineno-13-61" href = "#__codelineno-13-61" > < / a > < span class = "p" > }< / span >
< a id = "__codelineno-13-62" name = "__codelineno-13-62" href = "#__codelineno-13-62" > < / a >
< a id = "__codelineno-13-63" name = "__codelineno-13-63" href = "#__codelineno-13-63" > < / a > < span class = "cm" > /* 添加顶点 */< / span >
< a id = "__codelineno-13-64" name = "__codelineno-13-64" href = "#__codelineno-13-64" > < / a > < span class = "kd" > func< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "nx" > g< / span > < span class = "w" > < / span > < span class = "o" > *< / span > < span class = "nx" > graphAdjList< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "nx" > addVertex< / span > < span class = "p" > (< / span > < span class = "nx" > vet< / span > < span class = "w" > < / span > < span class = "nx" > vertex< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-13-65" name = "__codelineno-13-65" href = "#__codelineno-13-65" > < / a > < span class = "w" > < / span > < span class = "nx" > _< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > ok< / span > < span class = "w" > < / span > < span class = "o" > :=< / span > < span class = "w" > < / span > < span class = "nx" > g< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > [< / span > < span class = "nx" > vet< / span > < span class = "p" > ]< / span >
< a id = "__codelineno-13-66" name = "__codelineno-13-66" href = "#__codelineno-13-66" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "nx" > ok< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-13-67" name = "__codelineno-13-67" href = "#__codelineno-13-67" > < / a > < span class = "w" > < / span > < span class = "k" > return< / span >
< a id = "__codelineno-13-68" name = "__codelineno-13-68" href = "#__codelineno-13-68" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-13-69" name = "__codelineno-13-69" href = "#__codelineno-13-69" > < / a > < span class = "w" > < / span > < span class = "c1" > // 在邻接表中添加一个新链表(即 set) < / span >
< a id = "__codelineno-13-70" name = "__codelineno-13-70" href = "#__codelineno-13-70" > < / a > < span class = "w" > < / span > < span class = "nx" > g< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > [< / span > < span class = "nx" > vet< / span > < span class = "p" > ]< / span > < span class = "w" > < / span > < span class = "p" > =< / span > < span class = "w" > < / span > < span class = "nb" > make< / span > < span class = "p" > (< / span > < span class = "kd" > map< / span > < span class = "p" > [< / span > < span class = "nx" > vertex< / span > < span class = "p" > ]< / span > < span class = "kd" > struct< / span > < span class = "p" > {})< / span >
< a id = "__codelineno-13-71" name = "__codelineno-13-71" href = "#__codelineno-13-71" > < / a > < span class = "p" > }< / span >
< a id = "__codelineno-13-72" name = "__codelineno-13-72" href = "#__codelineno-13-72" > < / a >
< a id = "__codelineno-13-73" name = "__codelineno-13-73" href = "#__codelineno-13-73" > < / a > < span class = "cm" > /* 删除顶点 */< / span >
< a id = "__codelineno-13-74" name = "__codelineno-13-74" href = "#__codelineno-13-74" > < / a > < span class = "kd" > func< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "nx" > g< / span > < span class = "w" > < / span > < span class = "o" > *< / span > < span class = "nx" > graphAdjList< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "nx" > removeVertex< / span > < span class = "p" > (< / span > < span class = "nx" > vet< / span > < span class = "w" > < / span > < span class = "nx" > vertex< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-13-75" name = "__codelineno-13-75" href = "#__codelineno-13-75" > < / a > < span class = "w" > < / span > < span class = "nx" > _< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > ok< / span > < span class = "w" > < / span > < span class = "o" > :=< / span > < span class = "w" > < / span > < span class = "nx" > g< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > [< / span > < span class = "nx" > vet< / span > < span class = "p" > ]< / span >
< a id = "__codelineno-13-76" name = "__codelineno-13-76" href = "#__codelineno-13-76" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > !< / span > < span class = "nx" > ok< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-13-77" name = "__codelineno-13-77" href = "#__codelineno-13-77" > < / a > < span class = "w" > < / span > < span class = "nb" > panic< / span > < span class = "p" > (< / span > < span class = "s" > " error" < / span > < span class = "p" > )< / span >
< a id = "__codelineno-13-78" name = "__codelineno-13-78" href = "#__codelineno-13-78" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-13-79" name = "__codelineno-13-79" href = "#__codelineno-13-79" > < / a > < span class = "w" > < / span > < span class = "c1" > // 在邻接表中删除顶点 vet 对应的链表< / span >
< a id = "__codelineno-13-80" name = "__codelineno-13-80" href = "#__codelineno-13-80" > < / a > < span class = "w" > < / span > < span class = "nb" > delete< / span > < span class = "p" > (< / span > < span class = "nx" > g< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > vet< / span > < span class = "p" > )< / span >
< a id = "__codelineno-13-81" name = "__codelineno-13-81" href = "#__codelineno-13-81" > < / a > < span class = "w" > < / span > < span class = "c1" > // 遍历其它顶点的链表(即 Set) , 删除所有包含 vet 的边< / span >
< a id = "__codelineno-13-82" name = "__codelineno-13-82" href = "#__codelineno-13-82" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "nx" > _< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > set< / span > < span class = "w" > < / span > < span class = "o" > :=< / span > < span class = "w" > < / span > < span class = "k" > range< / span > < span class = "w" > < / span > < span class = "nx" > g< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-13-83" name = "__codelineno-13-83" href = "#__codelineno-13-83" > < / a > < span class = "w" > < / span > < span class = "c1" > // 操作< / span >
< a id = "__codelineno-13-84" name = "__codelineno-13-84" href = "#__codelineno-13-84" > < / a > < span class = "w" > < / span > < span class = "nb" > delete< / span > < span class = "p" > (< / span > < span class = "nx" > set< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > vet< / span > < span class = "p" > )< / span >
< a id = "__codelineno-13-85" name = "__codelineno-13-85" href = "#__codelineno-13-85" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-13-86" name = "__codelineno-13-86" href = "#__codelineno-13-86" > < / a > < span class = "p" > }< / span >
< a id = "__codelineno-13-87" name = "__codelineno-13-87" href = "#__codelineno-13-87" > < / a >
< a id = "__codelineno-13-88" name = "__codelineno-13-88" href = "#__codelineno-13-88" > < / a > < span class = "cm" > /* 打印邻接表 */< / span >
< a id = "__codelineno-13-89" name = "__codelineno-13-89" href = "#__codelineno-13-89" > < / a > < span class = "kd" > func< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "nx" > g< / span > < span class = "w" > < / span > < span class = "o" > *< / span > < span class = "nx" > graphAdjList< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "nb" > print< / span > < span class = "p" > ()< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-13-90" name = "__codelineno-13-90" href = "#__codelineno-13-90" > < / a > < span class = "w" > < / span > < span class = "kd" > var< / span > < span class = "w" > < / span > < span class = "nx" > builder< / span > < span class = "w" > < / span > < span class = "nx" > strings< / span > < span class = "p" > .< / span > < span class = "nx" > Builder< / span >
< a id = "__codelineno-13-91" name = "__codelineno-13-91" href = "#__codelineno-13-91" > < / a > < span class = "w" > < / span > < span class = "nx" > fmt< / span > < span class = "p" > .< / span > < span class = "nx" > Printf< / span > < span class = "p" > (< / span > < span class = "s" > " 邻接表 = \n" < / span > < span class = "p" > )< / span >
< a id = "__codelineno-13-92" name = "__codelineno-13-92" href = "#__codelineno-13-92" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "nx" > k< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > v< / span > < span class = "w" > < / span > < span class = "o" > :=< / span > < span class = "w" > < / span > < span class = "k" > range< / span > < span class = "w" > < / span > < span class = "nx" > g< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-13-93" name = "__codelineno-13-93" href = "#__codelineno-13-93" > < / a > < span class = "w" > < / span > < span class = "nx" > builder< / span > < span class = "p" > .< / span > < span class = "nx" > WriteString< / span > < span class = "p" > (< / span > < span class = "s" > " \t\t" < / span > < span class = "w" > < / span > < span class = "o" > +< / span > < span class = "w" > < / span > < span class = "nx" > strconv< / span > < span class = "p" > .< / span > < span class = "nx" > Itoa< / span > < span class = "p" > (< / span > < span class = "nx" > k< / span > < span class = "p" > .< / span > < span class = "nx" > val< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > +< / span > < span class = "w" > < / span > < span class = "s" > " : " < / span > < span class = "p" > )< / span >
< a id = "__codelineno-13-94" name = "__codelineno-13-94" href = "#__codelineno-13-94" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "nx" > vet< / span > < span class = "w" > < / span > < span class = "o" > :=< / span > < span class = "w" > < / span > < span class = "k" > range< / span > < span class = "w" > < / span > < span class = "nx" > v< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-13-95" name = "__codelineno-13-95" href = "#__codelineno-13-95" > < / a > < span class = "w" > < / span > < span class = "nx" > builder< / span > < span class = "p" > .< / span > < span class = "nx" > WriteString< / span > < span class = "p" > (< / span > < span class = "nx" > strconv< / span > < span class = "p" > .< / span > < span class = "nx" > Itoa< / span > < span class = "p" > (< / span > < span class = "nx" > vet< / span > < span class = "p" > .< / span > < span class = "nx" > val< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > +< / span > < span class = "w" > < / span > < span class = "s" > " " < / span > < span class = "p" > )< / span >
< a id = "__codelineno-13-96" name = "__codelineno-13-96" href = "#__codelineno-13-96" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-13-97" name = "__codelineno-13-97" href = "#__codelineno-13-97" > < / a > < span class = "w" > < / span > < span class = "nx" > fmt< / span > < span class = "p" > .< / span > < span class = "nx" > Println< / span > < span class = "p" > (< / span > < span class = "nx" > builder< / span > < span class = "p" > .< / span > < span class = "nx" > String< / span > < span class = "p" > ())< / span >
< a id = "__codelineno-13-98" name = "__codelineno-13-98" href = "#__codelineno-13-98" > < / a > < span class = "w" > < / span > < span class = "nx" > builder< / span > < span class = "p" > .< / span > < span class = "nx" > Reset< / span > < span class = "p" > ()< / span >
< a id = "__codelineno-13-99" name = "__codelineno-13-99" href = "#__codelineno-13-99" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-13-100" name = "__codelineno-13-100" href = "#__codelineno-13-100" > < / a > < span class = "p" > }< / span >
< a id = "__codelineno-13-51" name = "__codelineno-13-51" href = "#__codelineno-13-51" > < / a > < span class = "cm" > /* 添加顶点 */< / span >
< a id = "__codelineno-13-52" name = "__codelineno-13-52" href = "#__codelineno-13-52" > < / a > < span class = "kd" > func< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "nx" > g< / span > < span class = "w" > < / span > < span class = "o" > *< / span > < span class = "nx" > graphAdjList< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "nx" > addVertex< / span > < span class = "p" > (< / span > < span class = "nx" > vet< / span > < span class = "w" > < / span > < span class = "nx" > vertex< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-13-53" name = "__codelineno-13-53" href = "#__codelineno-13-53" > < / a > < span class = "w" > < / span > < span class = "nx" > _< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > ok< / span > < span class = "w" > < / span > < span class = "o" > :=< / span > < span class = "w" > < / span > < span class = "nx" > g< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > [< / span > < span class = "nx" > vet< / span > < span class = "p" > ]< / span >
< a id = "__codelineno-13-54" name = "__codelineno-13-54" href = "#__codelineno-13-54" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "nx" > ok< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-13-55" name = "__codelineno-13-55" href = "#__codelineno-13-55" > < / a > < span class = "w" > < / span > < span class = "k" > return< / span >
< a id = "__codelineno-13-56" name = "__codelineno-13-56" href = "#__codelineno-13-56" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-13-57" name = "__codelineno-13-57" href = "#__codelineno-13-57" > < / a > < span class = "w" > < / span > < span class = "c1" > // 在邻接表中添加一个新链表< / span >
< a id = "__codelineno-13-58" name = "__codelineno-13-58" href = "#__codelineno-13-58" > < / a > < span class = "w" > < / span > < span class = "nx" > g< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > [< / span > < span class = "nx" > vet< / span > < span class = "p" > ]< / span > < span class = "w" > < / span > < span class = "p" > =< / span > < span class = "w" > < / span > < span class = "nb" > make< / span > < span class = "p" > (< / span > < span class = "kd" > map< / span > < span class = "p" > [< / span > < span class = "nx" > vertex< / span > < span class = "p" > ]< / span > < span class = "kd" > struct< / span > < span class = "p" > {})< / span >
< a id = "__codelineno-13-59" name = "__codelineno-13-59" href = "#__codelineno-13-59" > < / a > < span class = "p" > }< / span >
< a id = "__codelineno-13-60" name = "__codelineno-13-60" href = "#__codelineno-13-60" > < / a >
< a id = "__codelineno-13-61" name = "__codelineno-13-61" href = "#__codelineno-13-61" > < / a > < span class = "cm" > /* 删除顶点 */< / span >
< a id = "__codelineno-13-62" name = "__codelineno-13-62" href = "#__codelineno-13-62" > < / a > < span class = "kd" > func< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "nx" > g< / span > < span class = "w" > < / span > < span class = "o" > *< / span > < span class = "nx" > graphAdjList< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "nx" > removeVertex< / span > < span class = "p" > (< / span > < span class = "nx" > vet< / span > < span class = "w" > < / span > < span class = "nx" > vertex< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-13-63" name = "__codelineno-13-63" href = "#__codelineno-13-63" > < / a > < span class = "w" > < / span > < span class = "nx" > _< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > ok< / span > < span class = "w" > < / span > < span class = "o" > :=< / span > < span class = "w" > < / span > < span class = "nx" > g< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > [< / span > < span class = "nx" > vet< / span > < span class = "p" > ]< / span >
< a id = "__codelineno-13-64" name = "__codelineno-13-64" href = "#__codelineno-13-64" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > !< / span > < span class = "nx" > ok< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-13-65" name = "__codelineno-13-65" href = "#__codelineno-13-65" > < / a > < span class = "w" > < / span > < span class = "nb" > panic< / span > < span class = "p" > (< / span > < span class = "s" > " error" < / span > < span class = "p" > )< / span >
< a id = "__codelineno-13-66" name = "__codelineno-13-66" href = "#__codelineno-13-66" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-13-67" name = "__codelineno-13-67" href = "#__codelineno-13-67" > < / a > < span class = "w" > < / span > < span class = "c1" > // 在邻接表中删除顶点 vet 对应的链表< / span >
< a id = "__codelineno-13-68" name = "__codelineno-13-68" href = "#__codelineno-13-68" > < / a > < span class = "w" > < / span > < span class = "nb" > delete< / span > < span class = "p" > (< / span > < span class = "nx" > g< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > vet< / span > < span class = "p" > )< / span >
< a id = "__codelineno-13-69" name = "__codelineno-13-69" href = "#__codelineno-13-69" > < / a > < span class = "w" > < / span > < span class = "c1" > // 遍历其它顶点的链表,删除所有包含 vet 的边< / span >
< a id = "__codelineno-13-70" name = "__codelineno-13-70" href = "#__codelineno-13-70" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "nx" > _< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > set< / span > < span class = "w" > < / span > < span class = "o" > :=< / span > < span class = "w" > < / span > < span class = "k" > range< / span > < span class = "w" > < / span > < span class = "nx" > g< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-13-71" name = "__codelineno-13-71" href = "#__codelineno-13-71" > < / a > < span class = "w" > < / span > < span class = "c1" > // 操作< / span >
< a id = "__codelineno-13-72" name = "__codelineno-13-72" href = "#__codelineno-13-72" > < / a > < span class = "w" > < / span > < span class = "nb" > delete< / span > < span class = "p" > (< / span > < span class = "nx" > set< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > vet< / span > < span class = "p" > )< / span >
< a id = "__codelineno-13-73" name = "__codelineno-13-73" href = "#__codelineno-13-73" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-13-74" name = "__codelineno-13-74" href = "#__codelineno-13-74" > < / a > < span class = "p" > }< / span >
< a id = "__codelineno-13-75" name = "__codelineno-13-75" href = "#__codelineno-13-75" > < / a >
< a id = "__codelineno-13-76" name = "__codelineno-13-76" href = "#__codelineno-13-76" > < / a > < span class = "cm" > /* 打印邻接表 */< / span >
< a id = "__codelineno-13-77" name = "__codelineno-13-77" href = "#__codelineno-13-77" > < / a > < span class = "kd" > func< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "nx" > g< / span > < span class = "w" > < / span > < span class = "o" > *< / span > < span class = "nx" > graphAdjList< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "nb" > print< / span > < span class = "p" > ()< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-13-78" name = "__codelineno-13-78" href = "#__codelineno-13-78" > < / a > < span class = "w" > < / span > < span class = "kd" > var< / span > < span class = "w" > < / span > < span class = "nx" > builder< / span > < span class = "w" > < / span > < span class = "nx" > strings< / span > < span class = "p" > .< / span > < span class = "nx" > Builder< / span >
< a id = "__codelineno-13-79" name = "__codelineno-13-79" href = "#__codelineno-13-79" > < / a > < span class = "w" > < / span > < span class = "nx" > fmt< / span > < span class = "p" > .< / span > < span class = "nx" > Printf< / span > < span class = "p" > (< / span > < span class = "s" > " 邻接表 = \n" < / span > < span class = "p" > )< / span >
< a id = "__codelineno-13-80" name = "__codelineno-13-80" href = "#__codelineno-13-80" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "nx" > k< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > v< / span > < span class = "w" > < / span > < span class = "o" > :=< / span > < span class = "w" > < / span > < span class = "k" > range< / span > < span class = "w" > < / span > < span class = "nx" > g< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-13-81" name = "__codelineno-13-81" href = "#__codelineno-13-81" > < / a > < span class = "w" > < / span > < span class = "nx" > builder< / span > < span class = "p" > .< / span > < span class = "nx" > WriteString< / span > < span class = "p" > (< / span > < span class = "s" > " \t\t" < / span > < span class = "w" > < / span > < span class = "o" > +< / span > < span class = "w" > < / span > < span class = "nx" > strconv< / span > < span class = "p" > .< / span > < span class = "nx" > Itoa< / span > < span class = "p" > (< / span > < span class = "nx" > k< / span > < span class = "p" > .< / span > < span class = "nx" > val< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > +< / span > < span class = "w" > < / span > < span class = "s" > " : " < / span > < span class = "p" > )< / span >
< a id = "__codelineno-13-82" name = "__codelineno-13-82" href = "#__codelineno-13-82" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "nx" > vet< / span > < span class = "w" > < / span > < span class = "o" > :=< / span > < span class = "w" > < / span > < span class = "k" > range< / span > < span class = "w" > < / span > < span class = "nx" > v< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-13-83" name = "__codelineno-13-83" href = "#__codelineno-13-83" > < / a > < span class = "w" > < / span > < span class = "nx" > builder< / span > < span class = "p" > .< / span > < span class = "nx" > WriteString< / span > < span class = "p" > (< / span > < span class = "nx" > strconv< / span > < span class = "p" > .< / span > < span class = "nx" > Itoa< / span > < span class = "p" > (< / span > < span class = "nx" > vet< / span > < span class = "p" > .< / span > < span class = "nx" > val< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > +< / span > < span class = "w" > < / span > < span class = "s" > " " < / span > < span class = "p" > )< / span >
< a id = "__codelineno-13-84" name = "__codelineno-13-84" href = "#__codelineno-13-84" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-13-85" name = "__codelineno-13-85" href = "#__codelineno-13-85" > < / a > < span class = "w" > < / span > < span class = "nx" > fmt< / span > < span class = "p" > .< / span > < span class = "nx" > Println< / span > < span class = "p" > (< / span > < span class = "nx" > builder< / span > < span class = "p" > .< / span > < span class = "nx" > String< / span > < span class = "p" > ())< / span >
< a id = "__codelineno-13-86" name = "__codelineno-13-86" href = "#__codelineno-13-86" > < / a > < span class = "w" > < / span > < span class = "nx" > builder< / span > < span class = "p" > .< / span > < span class = "nx" > Reset< / span > < span class = "p" > ()< / span >
< a id = "__codelineno-13-87" name = "__codelineno-13-87" href = "#__codelineno-13-87" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-13-88" name = "__codelineno-13-88" href = "#__codelineno-13-88" > < / a > < span class = "p" > }< / span >
< / code > < / pre > < / div >
< / div >
< div class = "tabbed-block" >
< div class = "highlight" > < span class = "filename" > graph_adjacency_list.js< / span > < pre > < span > < / span > < code > < a id = "__codelineno-14-1" name = "__codelineno-14-1" href = "#__codelineno-14-1" > < / a > < span class = "cm" > /* 顶点 类 */< / span >
< a id = "__codelineno-14-2" name = "__codelineno-14-2" href = "#__codelineno-14-2" > < / a > < span class = "kd" > class< / span > < span class = "w" > < / span > < span class = "nx" > Vertex < / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-14-3" name = "__codelineno-14-3" href = "#__codelineno-14-3" > < / a > < span class = "w" > < / span > < span class = " nx"> val< / span > < span class = "p" > ; < / span >
< a id = "__codelineno-14-4" name = "__codelineno-14-4" href = "#__codelineno-14-4" > < / a > < span class = "w" > < / span > < span class = " kr"> constructor< / span > < span class = "p" > (< / span > < span class = "nx" > val< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > { < / span >
< a id = "__codelineno-14-5" name = "__codelineno-14-5" href = "#__codelineno-14-5" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > . < / span > < span class = "nx" > val< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "nx" > val < / span > < span class = "p" > ;< / span >
< a id = "__codelineno-14-6" name = "__codelineno-14-6" href = "#__codelineno-14-6" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-14-7" name = "__codelineno-14-7" href = "#__codelineno-14-7" > < / a > < span class = " p"> } < / span >
< a id = "__codelineno-14-8" name = "__codelineno-14-8" href = "#__codelineno-14-8" > < / a >
< a id = "__codelineno-14-9" name = "__codelineno-14-9" href = "#__codelineno-14-9" > < / a > < span class = " cm"> /* 基于邻接表实现的无向图类 */ < / span >
< a id = "__codelineno-14-10" name = "__codelineno-14-10" href = "#__codelineno-14-10" > < / a > < span class = " kd"> class< / span > < span class = " w"> < / span > < span class = " nx"> GraphAdjList< / span > < span class = "w" > < / span > < span class = "p" > { < / span >
< a id = "__codelineno-14-11" name = "__codelineno-14-11" href = "#__codelineno-14-11" > < / a > < span class = "w" > < / span > < span class = " nx"> adjLi st< / span > < span class = " p"> ; < / span >
< a id = "__codelineno-14-12" name = "__codelineno-14-12" href = "#__codelineno-14-12" > < / a > < span class = "w" > < / span > < span class = " cm"> /* 构造方法 */ < / span >
< a id = "__codelineno-14-13" name = "__codelineno-14-13" href = "#__codelineno-14-13" > < / a > < span class = "w" > < / span > < span class = "k r"> constructor < / span > < span class = "p" > (< / span > < span class = "nx" > edges < / span > < span class = "p" > ) < / span > < span class = " w"> < / span > < span class = "p" > { < / span >
< a id = "__codelineno-14-14" name = "__codelineno-14-14" href = "#__codelineno-14-14" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList < / span > < span class = " w"> < / span > < span class = " o"> = < / span > < span class = "w" > < / span > < span class = " ow"> new < / span > < span class = " w"> < / span > < span class = " nb"> Map < / span > < span class = "p" > ( );< / span >
< a id = "__codelineno-14-15" name = "__codelineno-14-15" href = "#__codelineno-14-15" > < / a > < span class = "w" > < / span > < span class = " c1"> // 添加所有顶点和边 < / span >
< a id = "__codelineno-14-16" name = "__codelineno-14-16" href = "#__codelineno-14-16" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "kd" > const< / span > < span class = "w" > < / span > < span class = "nx" > edge< / span > < span class = "w" > < / span > < span class = "k" > of< / span > < span class = "w" > < / span > < span class = "nx" > edges< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > { < / span >
< a id = "__codelineno-14-17" name = "__codelineno-14-17" href = "#__codelineno-14-17" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > addVertex< / span > < span class = "p" > (< / span > < span class = "nx" > edge< / span > < span class = "p" > [< / span > < span class = "mf" > 0< / span > < span class = "p" > ]);< / span >
< a id = "__codelineno-14-18" name = "__codelineno-14-18" href = "#__codelineno-14-18" > < / a > < span class = "w" > < / span > < span class = " k"> this< / span > < span class = "p" > .< / span > < span class = "nx" > addVertex< / span > < span class = "p" > (< / span > < span class = "nx" > edge< / span > < span class = "p" > [< / span > < span class = "mf" > 1< / span > < span class = "p" > ]); < / span >
< a id = "__codelineno-14-19" name = "__codelineno-14-19" href = "#__codelineno-14-19" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > . < / span > < span class = "nx" > addEdge< / span > < span class = "p" > (< / span > < span class = "nx" > edg e< / span > < span class = "p" > [< / span > < span class = "mf" > 0< / span > < span class = "p" > ], < / span > < span class = "w" > < / span > < span class = " nx"> edge< / span > < span class = "p" > [< / span > < span class = "mf" > 1< / span > < span class = "p" > ]); < / span >
< a id = "__codelineno-14-20" name = "__codelineno-14-20" href = "#__codelineno-14-20" > < / a > < span class = "w" > < / span > < span class = " p"> } < / span >
< div class = "highlight" > < span class = "filename" > graph_adjacency_list.js< / span > < pre > < span > < / span > < code > < a id = "__codelineno-14-1" name = "__codelineno-14-1" href = "#__codelineno-14-1" > < / a > < span class = "cm" > /* 基于邻接表实现的无向图类 */< / span >
< a id = "__codelineno-14-2" name = "__codelineno-14-2" href = "#__codelineno-14-2" > < / a > < span class = "kd" > class< / span > < span class = "w" > < / span > < span class = "nx" > GraphAdjList< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-14-3" name = "__codelineno-14-3" href = "#__codelineno-14-3" > < / a > < span class = "w" > < / span > < span class = "c1" > // 邻接表,使用哈希表来代替链表,以提升删除边、删除顶点的效率< / span >
< a id = "__codelineno-14-4" name = "__codelineno-14-4" href = "#__codelineno-14-4" > < / a > < span class = "w" > < / span > < span class = "c1" > // 请注意, adjList 中的元素是 Vertex 对象< / span >
< a id = "__codelineno-14-5" name = "__codelineno-14-5" href = "#__codelineno-14-5" > < / a > < span class = "w" > < / span > < span class = "nx" > adjList< / span > < span class = "p" > ;< / span >
< a id = "__codelineno-14-6" name = "__codelineno-14-6" href = "#__codelineno-14-6" > < / a >
< a id = "__codelineno-14-7" name = "__codelineno-14-7" href = "#__codelineno-14-7" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 构造方法 */< / span >
< a id = "__codelineno-14-8" name = "__codelineno-14-8" href = "#__codelineno-14-8" > < / a > < span class = "w" > < / span > < span class = "kr" > constructor< / span > < span class = "p" > (< / span > < span class = "nx" > edges< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-14-9" name = "__codelineno-14-9" href = "#__codelineno-14-9" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "ow" > new< / span > < span class = "w" > < / span > < span class = "nb" > Map< / span > < span class = "p" > ();< / span >
< a id = "__codelineno-14-10" name = "__codelineno-14-10" href = "#__codelineno-14-10" > < / a > < span class = " w"> < / span > < span class = " c1"> // 添加所有顶点和边 < / span >
< a id = "__codelineno-14-11" name = "__codelineno-14-11" href = "#__codelineno-14-11" > < / a > < span class = "w" > < / span > < span class = " k"> for< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "kd" > con st< / span > < span class = " w"> < / span > < span class = "nx" > edge< / span > < span class = "w" > < / span > < span class = "k" > of< / span > < span class = "w" > < / span > < span class = "nx" > edges< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > { < / span >
< a id = "__codelineno-14-12" name = "__codelineno-14-12" href = "#__codelineno-14-12" > < / a > < span class = "w" > < / span > < span class = " k"> this< / span > < span class = "p" > .< / span > < span class = "nx" > addVertex< / span > < span class = "p" > (< / span > < span class = "nx" > edge< / span > < span class = "p" > [< / span > < span class = "mf" > 0< / span > < span class = "p" > ]); < / span >
< a id = "__codelineno-14-13" name = "__codelineno-14-13" href = "#__codelineno-14-13" > < / a > < span class = "w" > < / span > < span class = "k "> this< / span > < span class = "p" > .< / span > < span class = "nx" > addVertex < / span > < span class = "p" > (< / span > < span class = "nx" > edge< / span > < span class = "p" > [ < / span > < span class = " mf"> 1 < / span > < span class = "p" > ]); < / span >
< a id = "__codelineno-14-14" name = "__codelineno-14-14" href = "#__codelineno-14-14" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > addEdge< / span > < span class = "p" > ( < / span > < span class = " nx"> edge< / span > < span class = "p" > [ < / span > < span class = " mf"> 0< / span > < span class = "p" > ], < / span > < span class = "w" > < / span > < span class = " nx"> edge < / span > < span class = " p"> [ < / span > < span class = " mf"> 1 < / span > < span class = "p" > ] );< / span >
< a id = "__codelineno-14-15" name = "__codelineno-14-15" href = "#__codelineno-14-15" > < / a > < span class = "w" > < / span > < span class = " p"> } < / span >
< a id = "__codelineno-14-16" name = "__codelineno-14-16" href = "#__codelineno-14-16" > < / a > < span class = "w" > < / span > < span class = "p" > } < / span >
< a id = "__codelineno-14-17" name = "__codelineno-14-17" href = "#__codelineno-14-17" > < / a >
< a id = "__codelineno-14-18" name = "__codelineno-14-18" href = "#__codelineno-14-18" > < / a > < span class = "w" > < / span > < span class = " cm"> /* 获取顶点数量 */ < / span >
< a id = "__codelineno-14-19" name = "__codelineno-14-19" href = "#__codelineno-14-19" > < / a > < span class = "w" > < / span > < span class = "nx" > siz e< / span > < span class = "p" > () < / span > < span class = "w" > < / span > < span class = " p"> { < / span >
< a id = "__codelineno-14-20" name = "__codelineno-14-20" href = "#__codelineno-14-20" > < / a > < span class = "w" > < / span > < span class = " k"> return< / span > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > size< / span > < span class = "p" > ; < / span >
< a id = "__codelineno-14-21" name = "__codelineno-14-21" href = "#__codelineno-14-21" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-14-22" name = "__codelineno-14-22" href = "#__codelineno-14-22" > < / a >
< a id = "__codelineno-14-23" name = "__codelineno-14-23" href = "#__codelineno-14-23" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 获取顶点数量 */< / span >
< a id = "__codelineno-14-24" name = "__codelineno-14-24" href = "#__codelineno-14-24" > < / a > < span class = "w" > < / span > < span class = "nx" > size< / span > < span class = "p" > ()< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-14-25" name = "__codelineno-14-25" href = "#__codelineno-14-25" > < / a > < span class = "w" > < / span > < span class = "k" > return< / span > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > size< / span > < span class = "p" > ;< / span >
< a id = "__codelineno-14-26" name = "__codelineno-14-26" href = "#__codelineno-14-26" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-14-27" name = "__codelineno-14-27" href = "#__codelineno-14-27" > < / a >
< a id = "__codelineno-14-28" name = "__codelineno-14-28" href = "#__codelineno-14-28" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 添加边 */< / span >
< a id = "__codelineno-14-29" name = "__codelineno-14-29" href = "#__codelineno-14-29" > < / a > < span class = "w" > < / span > < span class = "nx" > addEdge< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-14-30" name = "__codelineno-14-30" href = "#__codelineno-14-30" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "o" > !< / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > has< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "o" > !< / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > has< / span > < span class = "p" > (< / span > < span class = "nx" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "nx" > vet1< / span > < span class = "w" > < / span > < span class = "o" > ===< / span > < span class = "w" > < / span > < span class = "nx" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-14-31" name = "__codelineno-14-31" href = "#__codelineno-14-31" > < / a > < span class = "w" > < / span > < span class = "k" > throw< / span > < span class = "w" > < / span > < span class = "ow" > new< / span > < span class = "w" > < / span > < span class = "ne" > Error< / span > < span class = "p" > (< / span > < span class = "s2" > " Illegal Argument Exception" < / span > < span class = "p" > );< / span >
< a id = "__codelineno-14-32" name = "__codelineno-14-32" href = "#__codelineno-14-32" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-14-33" name = "__codelineno-14-33" href = "#__codelineno-14-33" > < / a > < span class = "w" > < / span > < span class = "c1" > // 添加边 vet1 - vet2< / span >
< a id = "__codelineno-14-34" name = "__codelineno-14-34" href = "#__codelineno-14-34" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > get< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "p" > ).< / span > < span class = "nx" > add< / span > < span class = "p" > (< / span > < span class = "nx" > vet2< / span > < span class = "p" > );< / span >
< a id = "__codelineno-14-35" name = "__codelineno-14-35" href = "#__codelineno-14-35" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > get< / span > < span class = "p" > (< / span > < span class = "nx" > vet2< / span > < span class = "p" > ).< / span > < span class = "nx" > add< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "p" > );< / span >
< a id = "__codelineno-14-36" name = "__codelineno-14-36" href = "#__codelineno-14-36" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-14-37" name = "__codelineno-14-37" href = "#__codelineno-14-37" > < / a >
< a id = "__codelineno-14-38" name = "__codelineno-14-38" href = "#__codelineno-14-38" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 删除边 */< / span >
< a id = "__codelineno-14-39" name = "__codelineno-14-39" href = "#__codelineno-14-39" > < / a > < span class = "w" > < / span > < span class = "nx" > removeEdge< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-14-40" name = "__codelineno-14-40" href = "#__codelineno-14-40" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "o" > !< / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > has< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "o" > !< / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > has< / span > < span class = "p" > (< / span > < span class = "nx" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "nx" > vet1< / span > < span class = "w" > < / span > < span class = "o" > ===< / span > < span class = "w" > < / span > < span class = "nx" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-14-41" name = "__codelineno-14-41" href = "#__codelineno-14-41" > < / a > < span class = "w" > < / span > < span class = "k" > throw< / span > < span class = "w" > < / span > < span class = "ow" > new< / span > < span class = "w" > < / span > < span class = "ne" > Error< / span > < span class = "p" > (< / span > < span class = "s2" > " Illegal Argument Exception" < / span > < span class = "p" > );< / span >
< a id = "__codelineno-14-42" name = "__codelineno-14-42" href = "#__codelineno-14-42" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-14-43" name = "__codelineno-14-43" href = "#__codelineno-14-43" > < / a > < span class = "w" > < / span > < span class = "c1" > // 删除边 vet1 - vet2< / span >
< a id = "__codelineno-14-44" name = "__codelineno-14-44" href = "#__codelineno-14-44" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > get< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "p" > ).< / span > < span class = "ow" > delete< / span > < span class = "p" > (< / span > < span class = "nx" > vet2< / span > < span class = "p" > );< / span >
< a id = "__codelineno-14-45" name = "__codelineno-14-45" href = "#__codelineno-14-45" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > get< / span > < span class = "p" > (< / span > < span class = "nx" > vet2< / span > < span class = "p" > ).< / span > < span class = "ow" > delete< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "p" > );< / span >
< a id = "__codelineno-14-46" name = "__codelineno-14-46" href = "#__codelineno-14-46" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-14-47" name = "__codelineno-14-47" href = "#__codelineno-14-47" > < / a >
< a id = "__codelineno-14-48" name = "__codelineno-14-48" href = "#__codelineno-14-48" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 添加顶点 */< / span >
< a id = "__codelineno-14-49" name = "__codelineno-14-49" href = "#__codelineno-14-49" > < / a > < span class = "w" > < / span > < span class = "nx" > addVertex< / span > < span class = "p" > (< / span > < span class = "nx" > vet< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-14-50" name = "__codelineno-14-50" href = "#__codelineno-14-50" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > has< / span > < span class = "p" > (< / span > < span class = "nx" > vet< / span > < span class = "p" > ))< / span > < span class = "w" > < / span > < span class = "k" > return< / span > < span class = "p" > ;< / span >
< a id = "__codelineno-14-51" name = "__codelineno-14-51" href = "#__codelineno-14-51" > < / a > < span class = "w" > < / span > < span class = "c1" > // 在邻接表中添加一个新链表(即 HashSet) < / span >
< a id = "__codelineno-14-52" name = "__codelineno-14-52" href = "#__codelineno-14-52" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > set< / span > < span class = "p" > (< / span > < span class = "nx" > vet< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "ow" > new< / span > < span class = "w" > < / span > < span class = "nb" > Set< / span > < span class = "p" > ());< / span >
< a id = "__codelineno-14-53" name = "__codelineno-14-53" href = "#__codelineno-14-53" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-14-54" name = "__codelineno-14-54" href = "#__codelineno-14-54" > < / a >
< a id = "__codelineno-14-55" name = "__codelineno-14-55" href = "#__codelineno-14-55" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 删除顶点 */< / span >
< a id = "__codelineno-14-56" name = "__codelineno-14-56" href = "#__codelineno-14-56" > < / a > < span class = "w" > < / span > < span class = "nx" > removeVertex< / span > < span class = "p" > (< / span > < span class = "nx" > vet< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-14-57" name = "__codelineno-14-57" href = "#__codelineno-14-57" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "o" > !< / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > has< / span > < span class = "p" > (< / span > < span class = "nx" > vet< / span > < span class = "p" > ))< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-14-58" name = "__codelineno-14-58" href = "#__codelineno-14-58" > < / a > < span class = "w" > < / span > < span class = "k" > throw< / span > < span class = "w" > < / span > < span class = "ow" > new< / span > < span class = "w" > < / span > < span class = "ne" > Error< / span > < span class = "p" > (< / span > < span class = "s2" > " Illegal Argument Exception" < / span > < span class = "p" > );< / span >
< a id = "__codelineno-14-59" name = "__codelineno-14-59" href = "#__codelineno-14-59" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-14-60" name = "__codelineno-14-60" href = "#__codelineno-14-60" > < / a > < span class = "w" > < / span > < span class = "c1" > // 在邻接表中删除顶点 vet 对应的链表(即 HashSet) < / span >
< a id = "__codelineno-14-61" name = "__codelineno-14-61" href = "#__codelineno-14-61" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "ow" > delete< / span > < span class = "p" > (< / span > < span class = "nx" > vet< / span > < span class = "p" > );< / span >
< a id = "__codelineno-14-62" name = "__codelineno-14-62" href = "#__codelineno-14-62" > < / a > < span class = "w" > < / span > < span class = "c1" > // 遍历其它顶点的链表(即 HashSet) , 删除所有包含 vet 的边< / span >
< a id = "__codelineno-14-63" name = "__codelineno-14-63" href = "#__codelineno-14-63" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "kd" > let< / span > < span class = "w" > < / span > < span class = "nx" > set< / span > < span class = "w" > < / span > < span class = "k" > of< / span > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > values< / span > < span class = "p" > ())< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-14-64" name = "__codelineno-14-64" href = "#__codelineno-14-64" > < / a > < span class = "w" > < / span > < span class = "nx" > set< / span > < span class = "p" > .< / span > < span class = "ow" > delete< / span > < span class = "p" > (< / span > < span class = "nx" > vet< / span > < span class = "p" > );< / span >
< a id = "__codelineno-14-65" name = "__codelineno-14-65" href = "#__codelineno-14-65" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-14-66" name = "__codelineno-14-66" href = "#__codelineno-14-66" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-14-67" name = "__codelineno-14-67" href = "#__codelineno-14-67" > < / a >
< a id = "__codelineno-14-68" name = "__codelineno-14-68" href = "#__codelineno-14-68" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 打印邻接表 */< / span >
< a id = "__codelineno-14-69" name = "__codelineno-14-69" href = "#__codelineno-14-69" > < / a > < span class = "w" > < / span > < span class = "nx" > print< / span > < span class = "p" > ()< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-14-70" name = "__codelineno-14-70" href = "#__codelineno-14-70" > < / a > < span class = "w" > < / span > < span class = "nx" > console< / span > < span class = "p" > .< / span > < span class = "nx" > log< / span > < span class = "p" > (< / span > < span class = "s2" > " 邻接表 =" < / span > < span class = "p" > );< / span >
< a id = "__codelineno-14-71" name = "__codelineno-14-71" href = "#__codelineno-14-71" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "kd" > const< / span > < span class = "w" > < / span > < span class = "p" > [< / span > < span class = "nx" > key< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > value< / span > < span class = "p" > ]< / span > < span class = "w" > < / span > < span class = "k" > of< / span > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-14-72" name = "__codelineno-14-72" href = "#__codelineno-14-72" > < / a > < span class = "w" > < / span > < span class = "kd" > const< / span > < span class = "w" > < / span > < span class = "nx" > tmp< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "p" > [];< / span >
< a id = "__codelineno-14-73" name = "__codelineno-14-73" href = "#__codelineno-14-73" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "kd" > const< / span > < span class = "w" > < / span > < span class = "nx" > vertex< / span > < span class = "w" > < / span > < span class = "k" > of< / span > < span class = "w" > < / span > < span class = "nx" > value< / span > < span class = "p" > ){< / span >
< a id = "__codelineno-14-74" name = "__codelineno-14-74" href = "#__codelineno-14-74" > < / a > < span class = "w" > < / span > < span class = "nx" > tmp< / span > < span class = "p" > .< / span > < span class = "nx" > push< / span > < span class = "p" > (< / span > < span class = "nx" > vertex< / span > < span class = "p" > .< / span > < span class = "nx" > val< / span > < span class = "p" > );< / span >
< a id = "__codelineno-14-75" name = "__codelineno-14-75" href = "#__codelineno-14-75" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-14-76" name = "__codelineno-14-76" href = "#__codelineno-14-76" > < / a > < span class = "w" > < / span > < span class = "nx" > console< / span > < span class = "p" > .< / span > < span class = "nx" > log< / span > < span class = "p" > (< / span > < span class = "nx" > key< / span > < span class = "p" > .< / span > < span class = "nx" > val< / span > < span class = "w" > < / span > < span class = "o" > +< / span > < span class = "w" > < / span > < span class = "s2" > " : " < / span > < span class = "w" > < / span > < span class = "o" > +< / span > < span class = "w" > < / span > < span class = "nx" > tmp< / span > < span class = "w" > < / span > < span class = "o" > +< / span > < span class = "w" > < / span > < span class = "s2" > " ," < / span > < span class = "p" > );< / span >
< a id = "__codelineno-14-77" name = "__codelineno-14-77" href = "#__codelineno-14-77" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-14-78" name = "__codelineno-14-78" href = "#__codelineno-14-78" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-14-79" name = "__codelineno-14-79" href = "#__codelineno-14-79" > < / a > < span class = "p" > }< / span >
< a id = "__codelineno-14-23" name = "__codelineno-14-23" href = "#__codelineno-14-23" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 添加边 */< / span >
< a id = "__codelineno-14-24" name = "__codelineno-14-24" href = "#__codelineno-14-24" > < / a > < span class = "w" > < / span > < span class = "nx" > addEdge< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-14-25" name = "__codelineno-14-25" href = "#__codelineno-14-25" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "o" > !< / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > has< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "o" > !< / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > has< / span > < span class = "p" > (< / span > < span class = "nx" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "nx" > vet1< / span > < span class = "w" > < / span > < span class = "o" > ===< / span > < span class = "w" > < / span > < span class = "nx" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-14-26" name = "__codelineno-14-26" href = "#__codelineno-14-26" > < / a > < span class = "w" > < / span > < span class = "k" > throw< / span > < span class = "w" > < / span > < span class = "ow" > new< / span > < span class = "w" > < / span > < span class = "ne" > Error< / span > < span class = "p" > (< / span > < span class = "s2" > " Illegal Argument Exception" < / span > < span class = "p" > );< / span >
< a id = "__codelineno-14-27" name = "__codelineno-14-27" href = "#__codelineno-14-27" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-14-28" name = "__codelineno-14-28" href = "#__codelineno-14-28" > < / a > < span class = "w" > < / span > < span class = "c1" > // 添加边 vet1 - vet2< / span >
< a id = "__codelineno-14-29" name = "__codelineno-14-29" href = "#__codelineno-14-29" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > get< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "p" > ).< / span > < span class = "nx" > add< / span > < span class = "p" > (< / span > < span class = "nx" > vet2< / span > < span class = "p" > );< / span >
< a id = "__codelineno-14-30" name = "__codelineno-14-30" href = "#__codelineno-14-30" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > get< / span > < span class = "p" > (< / span > < span class = "nx" > vet2< / span > < span class = "p" > ).< / span > < span class = "nx" > add< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "p" > );< / span >
< a id = "__codelineno-14-31" name = "__codelineno-14-31" href = "#__codelineno-14-31" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-14-32" name = "__codelineno-14-32" href = "#__codelineno-14-32" > < / a >
< a id = "__codelineno-14-33" name = "__codelineno-14-33" href = "#__codelineno-14-33" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 删除边 */< / span >
< a id = "__codelineno-14-34" name = "__codelineno-14-34" href = "#__codelineno-14-34" > < / a > < span class = "w" > < / span > < span class = "nx" > removeEdge< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-14-35" name = "__codelineno-14-35" href = "#__codelineno-14-35" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "o" > !< / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > has< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "o" > !< / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > has< / span > < span class = "p" > (< / span > < span class = "nx" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "nx" > vet1< / span > < span class = "w" > < / span > < span class = "o" > ===< / span > < span class = "w" > < / span > < span class = "nx" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-14-36" name = "__codelineno-14-36" href = "#__codelineno-14-36" > < / a > < span class = "w" > < / span > < span class = "k" > throw< / span > < span class = "w" > < / span > < span class = "ow" > new< / span > < span class = "w" > < / span > < span class = "ne" > Error< / span > < span class = "p" > (< / span > < span class = "s2" > " Illegal Argument Exception" < / span > < span class = "p" > );< / span >
< a id = "__codelineno-14-37" name = "__codelineno-14-37" href = "#__codelineno-14-37" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-14-38" name = "__codelineno-14-38" href = "#__codelineno-14-38" > < / a > < span class = "w" > < / span > < span class = "c1" > // 删除边 vet1 - vet2< / span >
< a id = "__codelineno-14-39" name = "__codelineno-14-39" href = "#__codelineno-14-39" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > get< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "p" > ).< / span > < span class = "ow" > delete< / span > < span class = "p" > (< / span > < span class = "nx" > vet2< / span > < span class = "p" > );< / span >
< a id = "__codelineno-14-40" name = "__codelineno-14-40" href = "#__codelineno-14-40" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > get< / span > < span class = "p" > (< / span > < span class = "nx" > vet2< / span > < span class = "p" > ).< / span > < span class = "ow" > delete< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "p" > );< / span >
< a id = "__codelineno-14-41" name = "__codelineno-14-41" href = "#__codelineno-14-41" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-14-42" name = "__codelineno-14-42" href = "#__codelineno-14-42" > < / a >
< a id = "__codelineno-14-43" name = "__codelineno-14-43" href = "#__codelineno-14-43" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 添加顶点 */< / span >
< a id = "__codelineno-14-44" name = "__codelineno-14-44" href = "#__codelineno-14-44" > < / a > < span class = "w" > < / span > < span class = "nx" > addVertex< / span > < span class = "p" > (< / span > < span class = "nx" > vet< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-14-45" name = "__codelineno-14-45" href = "#__codelineno-14-45" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > has< / span > < span class = "p" > (< / span > < span class = "nx" > vet< / span > < span class = "p" > ))< / span > < span class = "w" > < / span > < span class = "k" > return< / span > < span class = "p" > ;< / span >
< a id = "__codelineno-14-46" name = "__codelineno-14-46" href = "#__codelineno-14-46" > < / a > < span class = "w" > < / span > < span class = "c1" > // 在邻接表中添加一个新链表< / span >
< a id = "__codelineno-14-47" name = "__codelineno-14-47" href = "#__codelineno-14-47" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > set< / span > < span class = "p" > (< / span > < span class = "nx" > vet< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "ow" > new< / span > < span class = "w" > < / span > < span class = "nb" > Set< / span > < span class = "p" > ());< / span >
< a id = "__codelineno-14-48" name = "__codelineno-14-48" href = "#__codelineno-14-48" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-14-49" name = "__codelineno-14-49" href = "#__codelineno-14-49" > < / a >
< a id = "__codelineno-14-50" name = "__codelineno-14-50" href = "#__codelineno-14-50" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 删除顶点 */< / span >
< a id = "__codelineno-14-51" name = "__codelineno-14-51" href = "#__codelineno-14-51" > < / a > < span class = "w" > < / span > < span class = "nx" > removeVertex< / span > < span class = "p" > (< / span > < span class = "nx" > vet< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-14-52" name = "__codelineno-14-52" href = "#__codelineno-14-52" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "o" > !< / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > has< / span > < span class = "p" > (< / span > < span class = "nx" > vet< / span > < span class = "p" > ))< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-14-53" name = "__codelineno-14-53" href = "#__codelineno-14-53" > < / a > < span class = "w" > < / span > < span class = "k" > throw< / span > < span class = "w" > < / span > < span class = "ow" > new< / span > < span class = "w" > < / span > < span class = "ne" > Error< / span > < span class = "p" > (< / span > < span class = "s2" > " Illegal Argument Exception" < / span > < span class = "p" > );< / span >
< a id = "__codelineno-14-54" name = "__codelineno-14-54" href = "#__codelineno-14-54" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-14-55" name = "__codelineno-14-55" href = "#__codelineno-14-55" > < / a > < span class = "w" > < / span > < span class = "c1" > // 在邻接表中删除顶点 vet 对应的链表< / span >
< a id = "__codelineno-14-56" name = "__codelineno-14-56" href = "#__codelineno-14-56" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "ow" > delete< / span > < span class = "p" > (< / span > < span class = "nx" > vet< / span > < span class = "p" > );< / span >
< a id = "__codelineno-14-57" name = "__codelineno-14-57" href = "#__codelineno-14-57" > < / a > < span class = "w" > < / span > < span class = "c1" > // 遍历其它顶点的链表,删除所有包含 vet 的边< / span >
< a id = "__codelineno-14-58" name = "__codelineno-14-58" href = "#__codelineno-14-58" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "kd" > let< / span > < span class = "w" > < / span > < span class = "nx" > set< / span > < span class = "w" > < / span > < span class = "k" > of< / span > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > values< / span > < span class = "p" > ())< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-14-59" name = "__codelineno-14-59" href = "#__codelineno-14-59" > < / a > < span class = "w" > < / span > < span class = "nx" > set< / span > < span class = "p" > .< / span > < span class = "ow" > delete< / span > < span class = "p" > (< / span > < span class = "nx" > vet< / span > < span class = "p" > );< / span >
< a id = "__codelineno-14-60" name = "__codelineno-14-60" href = "#__codelineno-14-60" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-14-61" name = "__codelineno-14-61" href = "#__codelineno-14-61" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-14-62" name = "__codelineno-14-62" href = "#__codelineno-14-62" > < / a >
< a id = "__codelineno-14-63" name = "__codelineno-14-63" href = "#__codelineno-14-63" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 打印邻接表 */< / span >
< a id = "__codelineno-14-64" name = "__codelineno-14-64" href = "#__codelineno-14-64" > < / a > < span class = "w" > < / span > < span class = "nx" > print< / span > < span class = "p" > ()< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-14-65" name = "__codelineno-14-65" href = "#__codelineno-14-65" > < / a > < span class = "w" > < / span > < span class = "nx" > console< / span > < span class = "p" > .< / span > < span class = "nx" > log< / span > < span class = "p" > (< / span > < span class = "s2" > " 邻接表 =" < / span > < span class = "p" > );< / span >
< a id = "__codelineno-14-66" name = "__codelineno-14-66" href = "#__codelineno-14-66" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "kd" > const< / span > < span class = "w" > < / span > < span class = "p" > [< / span > < span class = "nx" > key< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > value< / span > < span class = "p" > ]< / span > < span class = "w" > < / span > < span class = "k" > of< / span > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-14-67" name = "__codelineno-14-67" href = "#__codelineno-14-67" > < / a > < span class = "w" > < / span > < span class = "kd" > const< / span > < span class = "w" > < / span > < span class = "nx" > tmp< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "p" > [];< / span >
< a id = "__codelineno-14-68" name = "__codelineno-14-68" href = "#__codelineno-14-68" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "kd" > const< / span > < span class = "w" > < / span > < span class = "nx" > vertex< / span > < span class = "w" > < / span > < span class = "k" > of< / span > < span class = "w" > < / span > < span class = "nx" > value< / span > < span class = "p" > ){< / span >
< a id = "__codelineno-14-69" name = "__codelineno-14-69" href = "#__codelineno-14-69" > < / a > < span class = "w" > < / span > < span class = "nx" > tmp< / span > < span class = "p" > .< / span > < span class = "nx" > push< / span > < span class = "p" > (< / span > < span class = "nx" > vertex< / span > < span class = "p" > .< / span > < span class = "nx" > val< / span > < span class = "p" > );< / span >
< a id = "__codelineno-14-70" name = "__codelineno-14-70" href = "#__codelineno-14-70" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-14-71" name = "__codelineno-14-71" href = "#__codelineno-14-71" > < / a > < span class = "w" > < / span > < span class = "nx" > console< / span > < span class = "p" > .< / span > < span class = "nx" > log< / span > < span class = "p" > (< / span > < span class = "nx" > key< / span > < span class = "p" > .< / span > < span class = "nx" > val< / span > < span class = "w" > < / span > < span class = "o" > +< / span > < span class = "w" > < / span > < span class = "s2" > " : " < / span > < span class = "w" > < / span > < span class = "o" > +< / span > < span class = "w" > < / span > < span class = "nx" > tmp< / span > < span class = "w" > < / span > < span class = "o" > +< / span > < span class = "w" > < / span > < span class = "s2" > " ," < / span > < span class = "p" > );< / span >
< a id = "__codelineno-14-72" name = "__codelineno-14-72" href = "#__codelineno-14-72" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-14-73" name = "__codelineno-14-73" href = "#__codelineno-14-73" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-14-74" name = "__codelineno-14-74" href = "#__codelineno-14-74" > < / a > < span class = "p" > }< / span >
< / code > < / pre > < / div >
< / div >
< div class = "tabbed-block" >
< div class = "highlight" > < span class = "filename" > graph_adjacency_list.ts< / span > < pre > < span > < / span > < code > < a id = "__codelineno-15-1" name = "__codelineno-15-1" href = "#__codelineno-15-1" > < / a > < span class = "cm" > /* 顶点 类 */< / span >
< a id = "__codelineno-15-2" name = "__codelineno-15-2" href = "#__codelineno-15-2" > < / a > < span class = "kd" > class< / span > < span class = "w" > < / span > < span class = "nx" > Vertex < / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-15-3" name = "__codelineno-15-3" href = "#__codelineno-15-3" > < / a > < span class = "w" > < / span > < span class = " nx"> val< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "kt" > number< / span > < span class = "p" > ; < / span >
< a id = "__codelineno-15-4" name = "__codelineno-15-4" href = "#__codelineno-15-4" > < / a > < span class = "w" > < / span > < span class = " kr"> constructor< / span > < span class = "p" > (< / span > < span class = "nx" > val< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "kt" > number< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > { < / span >
< a id = "__codelineno-15-5" name = "__codelineno-15-5" href = "#__codelineno-15-5" > < / a > < span class = "w" > < / span > < span class = "k "> this < / span > < span class = " p"> . < / span > < span class = "nx" > val < / span > < span class = "w" > < / span > < span class = " o"> = < / span > < span class = " w"> < / span > < span class = "nx" > val < / span > < span class = "p" > ;< / span >
< a id = "__codelineno-15-6" name = "__codelineno-15-6" href = "#__codelineno-15-6" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-15-7" name = "__codelineno-15-7" href = "#__codelineno-15-7" > < / a > < span class = " p"> } < / span >
< a id = "__codelineno-15-8" name = "__codelineno-15-8" href = "#__codelineno-15-8" > < / a >
< a id = "__codelineno-15-9" name = "__codelineno-15-9" href = "#__codelineno-15-9" > < / a > < span class = " cm"> /* 基于邻接表实现的无向图类 */ < / span >
< a id = "__codelineno-15-10" name = "__codelineno-15-10" href = "#__codelineno-15-10" > < / a > < span class = " kd"> class< / span > < span class = " w"> < / span > < span class = " nx"> GraphAdjList< / span > < span class = "w" > < / span > < span class = "p" > { < / span >
< a id = "__codelineno-15-11" name = "__codelineno-15-11" href = "#__codelineno-15-11" > < / a > < span class = "w" > < / span > < span class = " nx"> adjList< / span > < span class = "o" > : < / span > < span class = "w" > < / span > < span class = " kt"> Map < / span > < span class = " o"> < < / span > < span class = "nx" > Vertex < / span > < span class = " p"> , < / span > < span class = " w"> < / span > < span class = " nb"> Set < / span > < span class = " o"> < < / span > < span class = " nx"> Vertex < / span > < span class = " o"> > > < / span > < span class = "p" > ; < / span >
< a id = "__codelineno-15-12" name = "__codelineno-15-12" href = "#__codelineno-15-12" > < / a > < span class = "w" > < / span > < span class = " cm"> /* 构造方法 */ < / span >
< a id = "__codelineno-15-13" name = "__codelineno-15-13" href = "#__codelineno-15-13" > < / a > < span class = "w" > < / span > < span class = "k r"> constructor < / span > < span class = "p" > ( < / span > < span class = "nx" > edges < / span > < span class = " o"> : < / span > < span class = " w"> < / span > < span class = "kt" > Vertex < / span > < span class = "p" > [][]) < / span > < span class = " w"> < / span > < span class = "p" > { < / span >
< a id = "__codelineno-15-14" name = "__codelineno-15-14" href = "#__codelineno-15-14" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList < / span > < span class = " w"> < / span > < span class = " o"> = < / span > < span class = "w" > < / span > < span class = " ow"> new < / span > < span class = " w"> < / span > < span class = " nb"> Map < / span > < span class = "p" > ( );< / span >
< a id = "__codelineno-15-15" name = "__codelineno-15-15" href = "#__codelineno-15-15" > < / a > < span class = "w" > < / span > < span class = " c1"> // 添加所有顶点和边 < / span >
< a id = "__codelineno-15-16" name = "__codelineno-15-16" href = "#__codelineno-15-16" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "kd" > const< / span > < span class = "w" > < / span > < span class = "nx" > edge< / span > < span class = "w" > < / span > < span class = "k" > of< / span > < span class = "w" > < / span > < span class = "nx" > edges< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > { < / span >
< a id = "__codelineno-15-17" name = "__codelineno-15-17" href = "#__codelineno-15-17" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > addVertex< / span > < span class = "p" > (< / span > < span class = "nx" > edge< / span > < span class = "p" > [< / span > < span class = "mf" > 0< / span > < span class = "p" > ]);< / span >
< a id = "__codelineno-15-18" name = "__codelineno-15-18" href = "#__codelineno-15-18" > < / a > < span class = "w" > < / span > < span class = " k"> this< / span > < span class = "p" > .< / span > < span class = "nx" > addVertex< / span > < span class = "p" > (< / span > < span class = "nx" > edge< / span > < span class = "p" > [< / span > < span class = "mf" > 1< / span > < span class = "p" > ]); < / span >
< a id = "__codelineno-15-19" name = "__codelineno-15-19" href = "#__codelineno-15-19" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > . < / span > < span class = "nx" > addEdge< / span > < span class = "p" > (< / span > < span class = "nx" > edg e< / span > < span class = "p" > [ < / span > < span class = " mf"> 0< / span > < span class = "p" > ], < / span > < span class = "w" > < / span > < span class = " nx"> edge < / span > < span class = " p"> [< / span > < span class = "mf" > 1 < / span > < span class = "p" > ]); < / span >
< a id = "__codelineno-15-20" name = "__codelineno-15-20" href = "#__codelineno-15-20" > < / a > < span class = "w" > < / span > < span class = " p"> } < / span >
< div class = "highlight" > < span class = "filename" > graph_adjacency_list.ts< / span > < pre > < span > < / span > < code > < a id = "__codelineno-15-1" name = "__codelineno-15-1" href = "#__codelineno-15-1" > < / a > < span class = "cm" > /* 基于邻接表实现的无向图类 */< / span >
< a id = "__codelineno-15-2" name = "__codelineno-15-2" href = "#__codelineno-15-2" > < / a > < span class = "kd" > class< / span > < span class = "w" > < / span > < span class = "nx" > GraphAdjList< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-15-3" name = "__codelineno-15-3" href = "#__codelineno-15-3" > < / a > < span class = "w" > < / span > < span class = " c1"> // 邻接表,使用哈希表来代替链表,以提升删除边、删除顶点的效率 < / span >
< a id = "__codelineno-15-4" name = "__codelineno-15-4" href = "#__codelineno-15-4" > < / a > < span class = "w" > < / span > < span class = " c1"> // 请注意, adjList 中的元素是 Vertex 对象 < / span >
< a id = "__codelineno-15-5" name = "__codelineno-15-5" href = "#__codelineno-15-5" > < / a > < span class = "w" > < / span > < span class = "nx" > adjList< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "k t"> Map < / span > < span class = " o"> < < / span > < span class = "nx" > Vertex< / span > < span class = "p" > , < / span > < span class = "w" > < / span > < span class = " nb"> Set < / span > < span class = " o"> < < / span > < span class = "nx" > Vertex< / span > < span class = "o" > > > < / span > < span class = "p" > ;< / span >
< a id = "__codelineno-15-6" name = "__codelineno-15-6" href = "#__codelineno-15-6" > < / a >
< a id = "__codelineno-15-7" name = "__codelineno-15-7" href = "#__codelineno-15-7" > < / a > < span class = " w"> < / span > < span class = "cm" > /* 构造方法 */ < / span >
< a id = "__codelineno-15-8" name = "__codelineno-15-8" href = "#__codelineno-15-8" > < / a > < span class = "w" > < / span > < span class = "kr" > constructor< / span > < span class = "p" > (< / span > < span class = "nx" > edges< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "kt" > Vertex< / span > < span class = "p" > [][])< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-15-9" name = "__codelineno-15-9" href = "#__codelineno-15-9" > < / a > < span class = " w"> < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "ow" > new< / span > < span class = "w" > < / span > < span class = "nb" > Map< / span > < span class = "p" > (); < / span >
< a id = "__codelineno-15-10" name = "__codelineno-15-10" href = "#__codelineno-15-10" > < / a > < span class = " w"> < / span > < span class = " c1"> // 添加所有顶点和边 < / span >
< a id = "__codelineno-15-11" name = "__codelineno-15-11" href = "#__codelineno-15-11" > < / a > < span class = "w" > < / span > < span class = " k"> for < / span > < span class = "w" > < / span > < span class = " p"> (< / span > < span class = "kd" > const < / span > < span class = " w"> < / span > < span class = "nx" > edge < / span > < span class = " w"> < / span > < span class = " k"> of < / span > < span class = " w"> < / span > < span class = " nx"> edges < / span > < span class = " p"> ) < / span > < span class = " w"> < / span > < span class = "p" > { < / span >
< a id = "__codelineno-15-12" name = "__codelineno-15-12" href = "#__codelineno-15-12" > < / a > < span class = "w" > < / span > < span class = " k"> this< / span > < span class = "p" > .< / span > < span class = "nx" > addVertex< / span > < span class = "p" > (< / span > < span class = "nx" > edge< / span > < span class = "p" > [< / span > < span class = "mf" > 0< / span > < span class = "p" > ]); < / span >
< a id = "__codelineno-15-13" name = "__codelineno-15-13" href = "#__codelineno-15-13" > < / a > < span class = "w" > < / span > < span class = "k "> this < / span > < span class = "p" > . < / span > < span class = "nx" > addVertex < / span > < span class = " p"> ( < / span > < span class = " nx"> edge < / span > < span class = "p" > [< / span > < span class = " mf"> 1 < / span > < span class = "p" > ]); < / span >
< a id = "__codelineno-15-14" name = "__codelineno-15-14" href = "#__codelineno-15-14" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > addEdge< / span > < span class = "p" > ( < / span > < span class = " nx"> edge< / span > < span class = "p" > [ < / span > < span class = " mf"> 0< / span > < span class = "p" > ], < / span > < span class = "w" > < / span > < span class = " nx"> edge < / span > < span class = " p"> [ < / span > < span class = " mf"> 1 < / span > < span class = "p" > ] );< / span >
< a id = "__codelineno-15-15" name = "__codelineno-15-15" href = "#__codelineno-15-15" > < / a > < span class = "w" > < / span > < span class = " p"> } < / span >
< a id = "__codelineno-15-16" name = "__codelineno-15-16" href = "#__codelineno-15-16" > < / a > < span class = "w" > < / span > < span class = "p" > } < / span >
< a id = "__codelineno-15-17" name = "__codelineno-15-17" href = "#__codelineno-15-17" > < / a >
< a id = "__codelineno-15-18" name = "__codelineno-15-18" href = "#__codelineno-15-18" > < / a > < span class = "w" > < / span > < span class = " cm"> /* 获取顶点数量 */ < / span >
< a id = "__codelineno-15-19" name = "__codelineno-15-19" href = "#__codelineno-15-19" > < / a > < span class = "w" > < / span > < span class = "nx" > siz e< / span > < span class = "p" > () < / span > < span class = " o"> : < / span > < span class = "w" > < / span > < span class = " kt"> number < / span > < span class = " w"> < / span > < span class = "p" > { < / span >
< a id = "__codelineno-15-20" name = "__codelineno-15-20" href = "#__codelineno-15-20" > < / a > < span class = "w" > < / span > < span class = " k"> return< / span > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > size< / span > < span class = "p" > ; < / span >
< a id = "__codelineno-15-21" name = "__codelineno-15-21" href = "#__codelineno-15-21" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-15-22" name = "__codelineno-15-22" href = "#__codelineno-15-22" > < / a >
< a id = "__codelineno-15-23" name = "__codelineno-15-23" href = "#__codelineno-15-23" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 获取顶点数量 */< / span >
< a id = "__codelineno-15-24" name = "__codelineno-15-24" href = "#__codelineno-15-24" > < / a > < span class = "w" > < / span > < span class = "nx" > size< / span > < span class = "p" > ()< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "kt" > number< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-15-25" name = "__codelineno-15-25" href = "#__codelineno-15-25" > < / a > < span class = "w" > < / span > < span class = "k" > return< / span > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > size< / span > < span class = "p" > ;< / span >
< a id = "__codelineno-15-26" name = "__codelineno-15-26" href = "#__codelineno-15-26" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-15-27" name = "__codelineno-15-27" href = "#__codelineno-15-27" > < / a >
< a id = "__codelineno-15-28" name = "__codelineno-15-28" href = "#__codelineno-15-28" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 添加边 */< / span >
< a id = "__codelineno-15-29" name = "__codelineno-15-29" href = "#__codelineno-15-29" > < / a > < span class = "w" > < / span > < span class = "nx" > addEdge< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "kt" > Vertex< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > vet2< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "kt" > Vertex< / span > < span class = "p" > )< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "ow" > void< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-15-30" name = "__codelineno-15-30" href = "#__codelineno-15-30" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "o" > !< / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > has< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "o" > !< / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > has< / span > < span class = "p" > (< / span > < span class = "nx" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "nx" > vet1< / span > < span class = "w" > < / span > < span class = "o" > ===< / span > < span class = "w" > < / span > < span class = "nx" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-15-31" name = "__codelineno-15-31" href = "#__codelineno-15-31" > < / a > < span class = "w" > < / span > < span class = "k" > throw< / span > < span class = "w" > < / span > < span class = "ow" > new< / span > < span class = "w" > < / span > < span class = "ne" > Error< / span > < span class = "p" > (< / span > < span class = "s2" > " Illegal Argument Exception" < / span > < span class = "p" > );< / span >
< a id = "__codelineno-15-32" name = "__codelineno-15-32" href = "#__codelineno-15-32" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-15-33" name = "__codelineno-15-33" href = "#__codelineno-15-33" > < / a > < span class = "w" > < / span > < span class = "c1" > // 添加边 vet1 - vet2< / span >
< a id = "__codelineno-15-34" name = "__codelineno-15-34" href = "#__codelineno-15-34" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > get< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "p" > ).< / span > < span class = "nx" > add< / span > < span class = "p" > (< / span > < span class = "nx" > vet2< / span > < span class = "p" > );< / span >
< a id = "__codelineno-15-35" name = "__codelineno-15-35" href = "#__codelineno-15-35" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > get< / span > < span class = "p" > (< / span > < span class = "nx" > vet2< / span > < span class = "p" > ).< / span > < span class = "nx" > add< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "p" > );< / span >
< a id = "__codelineno-15-36" name = "__codelineno-15-36" href = "#__codelineno-15-36" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-15-37" name = "__codelineno-15-37" href = "#__codelineno-15-37" > < / a >
< a id = "__codelineno-15-38" name = "__codelineno-15-38" href = "#__codelineno-15-38" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 删除边 */< / span >
< a id = "__codelineno-15-39" name = "__codelineno-15-39" href = "#__codelineno-15-39" > < / a > < span class = "w" > < / span > < span class = "nx" > removeEdge< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "kt" > Vertex< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > vet2< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "kt" > Vertex< / span > < span class = "p" > )< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "ow" > void< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-15-40" name = "__codelineno-15-40" href = "#__codelineno-15-40" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "o" > !< / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > has< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "o" > !< / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > has< / span > < span class = "p" > (< / span > < span class = "nx" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "nx" > vet1< / span > < span class = "w" > < / span > < span class = "o" > ===< / span > < span class = "w" > < / span > < span class = "nx" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-15-41" name = "__codelineno-15-41" href = "#__codelineno-15-41" > < / a > < span class = "w" > < / span > < span class = "k" > throw< / span > < span class = "w" > < / span > < span class = "ow" > new< / span > < span class = "w" > < / span > < span class = "ne" > Error< / span > < span class = "p" > (< / span > < span class = "s2" > " Illegal Argument Exception" < / span > < span class = "p" > );< / span >
< a id = "__codelineno-15-42" name = "__codelineno-15-42" href = "#__codelineno-15-42" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-15-43" name = "__codelineno-15-43" href = "#__codelineno-15-43" > < / a > < span class = "w" > < / span > < span class = "c1" > // 删除边 vet1 - vet2< / span >
< a id = "__codelineno-15-44" name = "__codelineno-15-44" href = "#__codelineno-15-44" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > get< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "p" > ).< / span > < span class = "ow" > delete< / span > < span class = "p" > (< / span > < span class = "nx" > vet2< / span > < span class = "p" > );< / span >
< a id = "__codelineno-15-45" name = "__codelineno-15-45" href = "#__codelineno-15-45" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > get< / span > < span class = "p" > (< / span > < span class = "nx" > vet2< / span > < span class = "p" > ).< / span > < span class = "ow" > delete< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "p" > );< / span >
< a id = "__codelineno-15-46" name = "__codelineno-15-46" href = "#__codelineno-15-46" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-15-47" name = "__codelineno-15-47" href = "#__codelineno-15-47" > < / a >
< a id = "__codelineno-15-48" name = "__codelineno-15-48" href = "#__codelineno-15-48" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 添加顶点 */< / span >
< a id = "__codelineno-15-49" name = "__codelineno-15-49" href = "#__codelineno-15-49" > < / a > < span class = "w" > < / span > < span class = "nx" > addVertex< / span > < span class = "p" > (< / span > < span class = "nx" > vet< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "kt" > Vertex< / span > < span class = "p" > )< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "ow" > void< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-15-50" name = "__codelineno-15-50" href = "#__codelineno-15-50" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > has< / span > < span class = "p" > (< / span > < span class = "nx" > vet< / span > < span class = "p" > ))< / span > < span class = "w" > < / span > < span class = "k" > return< / span > < span class = "p" > ;< / span >
< a id = "__codelineno-15-51" name = "__codelineno-15-51" href = "#__codelineno-15-51" > < / a > < span class = "w" > < / span > < span class = "c1" > // 在邻接表中添加一个新链表(即 HashSet) < / span >
< a id = "__codelineno-15-52" name = "__codelineno-15-52" href = "#__codelineno-15-52" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > set< / span > < span class = "p" > (< / span > < span class = "nx" > vet< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "ow" > new< / span > < span class = "w" > < / span > < span class = "nb" > Set< / span > < span class = "p" > ());< / span >
< a id = "__codelineno-15-53" name = "__codelineno-15-53" href = "#__codelineno-15-53" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-15-54" name = "__codelineno-15-54" href = "#__codelineno-15-54" > < / a >
< a id = "__codelineno-15-55" name = "__codelineno-15-55" href = "#__codelineno-15-55" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 删除顶点 */< / span >
< a id = "__codelineno-15-56" name = "__codelineno-15-56" href = "#__codelineno-15-56" > < / a > < span class = "w" > < / span > < span class = "nx" > removeVertex< / span > < span class = "p" > (< / span > < span class = "nx" > vet< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "kt" > Vertex< / span > < span class = "p" > )< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "ow" > void< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-15-57" name = "__codelineno-15-57" href = "#__codelineno-15-57" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "o" > !< / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > has< / span > < span class = "p" > (< / span > < span class = "nx" > vet< / span > < span class = "p" > ))< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-15-58" name = "__codelineno-15-58" href = "#__codelineno-15-58" > < / a > < span class = "w" > < / span > < span class = "k" > throw< / span > < span class = "w" > < / span > < span class = "ow" > new< / span > < span class = "w" > < / span > < span class = "ne" > Error< / span > < span class = "p" > (< / span > < span class = "s2" > " Illegal Argument Exception" < / span > < span class = "p" > );< / span >
< a id = "__codelineno-15-59" name = "__codelineno-15-59" href = "#__codelineno-15-59" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-15-60" name = "__codelineno-15-60" href = "#__codelineno-15-60" > < / a > < span class = "w" > < / span > < span class = "c1" > // 在邻接表中删除顶点 vet 对应的链表(即 HashSet) < / span >
< a id = "__codelineno-15-61" name = "__codelineno-15-61" href = "#__codelineno-15-61" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "ow" > delete< / span > < span class = "p" > (< / span > < span class = "nx" > vet< / span > < span class = "p" > );< / span >
< a id = "__codelineno-15-62" name = "__codelineno-15-62" href = "#__codelineno-15-62" > < / a > < span class = "w" > < / span > < span class = "c1" > // 遍历其它顶点的链表(即 HashSet) , 删除所有包含 vet 的边< / span >
< a id = "__codelineno-15-63" name = "__codelineno-15-63" href = "#__codelineno-15-63" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "kd" > let< / span > < span class = "w" > < / span > < span class = "nx" > set< / span > < span class = "w" > < / span > < span class = "k" > of< / span > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > values< / span > < span class = "p" > ())< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-15-64" name = "__codelineno-15-64" href = "#__codelineno-15-64" > < / a > < span class = "w" > < / span > < span class = "nx" > set< / span > < span class = "p" > .< / span > < span class = "ow" > delete< / span > < span class = "p" > (< / span > < span class = "nx" > vet< / span > < span class = "p" > );< / span >
< a id = "__codelineno-15-65" name = "__codelineno-15-65" href = "#__codelineno-15-65" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-15-66" name = "__codelineno-15-66" href = "#__codelineno-15-66" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-15-67" name = "__codelineno-15-67" href = "#__codelineno-15-67" > < / a >
< a id = "__codelineno-15-68" name = "__codelineno-15-68" href = "#__codelineno-15-68" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 打印邻接表 */< / span >
< a id = "__codelineno-15-69" name = "__codelineno-15-69" href = "#__codelineno-15-69" > < / a > < span class = "w" > < / span > < span class = "nx" > print< / span > < span class = "p" > ()< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "ow" > void< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-15-70" name = "__codelineno-15-70" href = "#__codelineno-15-70" > < / a > < span class = "w" > < / span > < span class = "nx" > console< / span > < span class = "p" > .< / span > < span class = "nx" > log< / span > < span class = "p" > (< / span > < span class = "s2" > " 邻接表 =" < / span > < span class = "p" > );< / span >
< a id = "__codelineno-15-71" name = "__codelineno-15-71" href = "#__codelineno-15-71" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "kd" > const< / span > < span class = "w" > < / span > < span class = "p" > [< / span > < span class = "nx" > key< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > value< / span > < span class = "p" > ]< / span > < span class = "w" > < / span > < span class = "k" > of< / span > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > entries< / span > < span class = "p" > ())< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-15-72" name = "__codelineno-15-72" href = "#__codelineno-15-72" > < / a > < span class = "w" > < / span > < span class = "kd" > const< / span > < span class = "w" > < / span > < span class = "nx" > tmp< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "p" > [];< / span >
< a id = "__codelineno-15-73" name = "__codelineno-15-73" href = "#__codelineno-15-73" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "kd" > const< / span > < span class = "w" > < / span > < span class = "nx" > vertex< / span > < span class = "w" > < / span > < span class = "k" > of< / span > < span class = "w" > < / span > < span class = "nx" > value< / span > < span class = "p" > ){< / span >
< a id = "__codelineno-15-74" name = "__codelineno-15-74" href = "#__codelineno-15-74" > < / a > < span class = "w" > < / span > < span class = "nx" > tmp< / span > < span class = "p" > .< / span > < span class = "nx" > push< / span > < span class = "p" > (< / span > < span class = "nx" > vertex< / span > < span class = "p" > .< / span > < span class = "nx" > val< / span > < span class = "p" > );< / span >
< a id = "__codelineno-15-75" name = "__codelineno-15-75" href = "#__codelineno-15-75" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-15-76" name = "__codelineno-15-76" href = "#__codelineno-15-76" > < / a > < span class = "w" > < / span > < span class = "nx" > console< / span > < span class = "p" > .< / span > < span class = "nx" > log< / span > < span class = "p" > (< / span > < span class = "nx" > key< / span > < span class = "p" > .< / span > < span class = "nx" > val< / span > < span class = "w" > < / span > < span class = "o" > +< / span > < span class = "w" > < / span > < span class = "s2" > " : " < / span > < span class = "w" > < / span > < span class = "o" > +< / span > < span class = "w" > < / span > < span class = "nx" > tmp< / span > < span class = "w" > < / span > < span class = "o" > +< / span > < span class = "w" > < / span > < span class = "s2" > " ," < / span > < span class = "p" > );< / span >
< a id = "__codelineno-15-77" name = "__codelineno-15-77" href = "#__codelineno-15-77" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-15-78" name = "__codelineno-15-78" href = "#__codelineno-15-78" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-15-79" name = "__codelineno-15-79" href = "#__codelineno-15-79" > < / a > < span class = "p" > }< / span >
< a id = "__codelineno-15-23" name = "__codelineno-15-23" href = "#__codelineno-15-23" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 添加边 */< / span >
< a id = "__codelineno-15-24" name = "__codelineno-15-24" href = "#__codelineno-15-24" > < / a > < span class = "w" > < / span > < span class = "nx" > addEdge< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "kt" > Vertex< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > vet2< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "kt" > Vertex< / span > < span class = "p" > )< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "ow" > void< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-15-25" name = "__codelineno-15-25" href = "#__codelineno-15-25" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "o" > !< / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > has< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "o" > !< / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > has< / span > < span class = "p" > (< / span > < span class = "nx" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "nx" > vet1< / span > < span class = "w" > < / span > < span class = "o" > ===< / span > < span class = "w" > < / span > < span class = "nx" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-15-26" name = "__codelineno-15-26" href = "#__codelineno-15-26" > < / a > < span class = "w" > < / span > < span class = "k" > throw< / span > < span class = "w" > < / span > < span class = "ow" > new< / span > < span class = "w" > < / span > < span class = "ne" > Error< / span > < span class = "p" > (< / span > < span class = "s2" > " Illegal Argument Exception" < / span > < span class = "p" > );< / span >
< a id = "__codelineno-15-27" name = "__codelineno-15-27" href = "#__codelineno-15-27" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-15-28" name = "__codelineno-15-28" href = "#__codelineno-15-28" > < / a > < span class = "w" > < / span > < span class = "c1" > // 添加边 vet1 - vet2< / span >
< a id = "__codelineno-15-29" name = "__codelineno-15-29" href = "#__codelineno-15-29" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > get< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "p" > ).< / span > < span class = "nx" > add< / span > < span class = "p" > (< / span > < span class = "nx" > vet2< / span > < span class = "p" > );< / span >
< a id = "__codelineno-15-30" name = "__codelineno-15-30" href = "#__codelineno-15-30" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > get< / span > < span class = "p" > (< / span > < span class = "nx" > vet2< / span > < span class = "p" > ).< / span > < span class = "nx" > add< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "p" > );< / span >
< a id = "__codelineno-15-31" name = "__codelineno-15-31" href = "#__codelineno-15-31" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-15-32" name = "__codelineno-15-32" href = "#__codelineno-15-32" > < / a >
< a id = "__codelineno-15-33" name = "__codelineno-15-33" href = "#__codelineno-15-33" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 删除边 */< / span >
< a id = "__codelineno-15-34" name = "__codelineno-15-34" href = "#__codelineno-15-34" > < / a > < span class = "w" > < / span > < span class = "nx" > removeEdge< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "kt" > Vertex< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > vet2< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "kt" > Vertex< / span > < span class = "p" > )< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "ow" > void< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-15-35" name = "__codelineno-15-35" href = "#__codelineno-15-35" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "o" > !< / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > has< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "o" > !< / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > has< / span > < span class = "p" > (< / span > < span class = "nx" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > ||< / span > < span class = "w" > < / span > < span class = "nx" > vet1< / span > < span class = "w" > < / span > < span class = "o" > ===< / span > < span class = "w" > < / span > < span class = "nx" > vet2< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-15-36" name = "__codelineno-15-36" href = "#__codelineno-15-36" > < / a > < span class = "w" > < / span > < span class = "k" > throw< / span > < span class = "w" > < / span > < span class = "ow" > new< / span > < span class = "w" > < / span > < span class = "ne" > Error< / span > < span class = "p" > (< / span > < span class = "s2" > " Illegal Argument Exception" < / span > < span class = "p" > );< / span >
< a id = "__codelineno-15-37" name = "__codelineno-15-37" href = "#__codelineno-15-37" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-15-38" name = "__codelineno-15-38" href = "#__codelineno-15-38" > < / a > < span class = "w" > < / span > < span class = "c1" > // 删除边 vet1 - vet2< / span >
< a id = "__codelineno-15-39" name = "__codelineno-15-39" href = "#__codelineno-15-39" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > get< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "p" > ).< / span > < span class = "ow" > delete< / span > < span class = "p" > (< / span > < span class = "nx" > vet2< / span > < span class = "p" > );< / span >
< a id = "__codelineno-15-40" name = "__codelineno-15-40" href = "#__codelineno-15-40" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > get< / span > < span class = "p" > (< / span > < span class = "nx" > vet2< / span > < span class = "p" > ).< / span > < span class = "ow" > delete< / span > < span class = "p" > (< / span > < span class = "nx" > vet1< / span > < span class = "p" > );< / span >
< a id = "__codelineno-15-41" name = "__codelineno-15-41" href = "#__codelineno-15-41" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-15-42" name = "__codelineno-15-42" href = "#__codelineno-15-42" > < / a >
< a id = "__codelineno-15-43" name = "__codelineno-15-43" href = "#__codelineno-15-43" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 添加顶点 */< / span >
< a id = "__codelineno-15-44" name = "__codelineno-15-44" href = "#__codelineno-15-44" > < / a > < span class = "w" > < / span > < span class = "nx" > addVertex< / span > < span class = "p" > (< / span > < span class = "nx" > vet< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "kt" > Vertex< / span > < span class = "p" > )< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "ow" > void< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-15-45" name = "__codelineno-15-45" href = "#__codelineno-15-45" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > has< / span > < span class = "p" > (< / span > < span class = "nx" > vet< / span > < span class = "p" > ))< / span > < span class = "w" > < / span > < span class = "k" > return< / span > < span class = "p" > ;< / span >
< a id = "__codelineno-15-46" name = "__codelineno-15-46" href = "#__codelineno-15-46" > < / a > < span class = "w" > < / span > < span class = "c1" > // 在邻接表中添加一个新链表< / span >
< a id = "__codelineno-15-47" name = "__codelineno-15-47" href = "#__codelineno-15-47" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > set< / span > < span class = "p" > (< / span > < span class = "nx" > vet< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "ow" > new< / span > < span class = "w" > < / span > < span class = "nb" > Set< / span > < span class = "p" > ());< / span >
< a id = "__codelineno-15-48" name = "__codelineno-15-48" href = "#__codelineno-15-48" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-15-49" name = "__codelineno-15-49" href = "#__codelineno-15-49" > < / a >
< a id = "__codelineno-15-50" name = "__codelineno-15-50" href = "#__codelineno-15-50" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 删除顶点 */< / span >
< a id = "__codelineno-15-51" name = "__codelineno-15-51" href = "#__codelineno-15-51" > < / a > < span class = "w" > < / span > < span class = "nx" > removeVertex< / span > < span class = "p" > (< / span > < span class = "nx" > vet< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "kt" > Vertex< / span > < span class = "p" > )< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "ow" > void< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-15-52" name = "__codelineno-15-52" href = "#__codelineno-15-52" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "o" > !< / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > has< / span > < span class = "p" > (< / span > < span class = "nx" > vet< / span > < span class = "p" > ))< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-15-53" name = "__codelineno-15-53" href = "#__codelineno-15-53" > < / a > < span class = "w" > < / span > < span class = "k" > throw< / span > < span class = "w" > < / span > < span class = "ow" > new< / span > < span class = "w" > < / span > < span class = "ne" > Error< / span > < span class = "p" > (< / span > < span class = "s2" > " Illegal Argument Exception" < / span > < span class = "p" > );< / span >
< a id = "__codelineno-15-54" name = "__codelineno-15-54" href = "#__codelineno-15-54" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-15-55" name = "__codelineno-15-55" href = "#__codelineno-15-55" > < / a > < span class = "w" > < / span > < span class = "c1" > // 在邻接表中删除顶点 vet 对应的链表< / span >
< a id = "__codelineno-15-56" name = "__codelineno-15-56" href = "#__codelineno-15-56" > < / a > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "ow" > delete< / span > < span class = "p" > (< / span > < span class = "nx" > vet< / span > < span class = "p" > );< / span >
< a id = "__codelineno-15-57" name = "__codelineno-15-57" href = "#__codelineno-15-57" > < / a > < span class = "w" > < / span > < span class = "c1" > // 遍历其它顶点的链表,删除所有包含 vet 的边< / span >
< a id = "__codelineno-15-58" name = "__codelineno-15-58" href = "#__codelineno-15-58" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "kd" > let< / span > < span class = "w" > < / span > < span class = "nx" > set< / span > < span class = "w" > < / span > < span class = "k" > of< / span > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > values< / span > < span class = "p" > ())< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-15-59" name = "__codelineno-15-59" href = "#__codelineno-15-59" > < / a > < span class = "w" > < / span > < span class = "nx" > set< / span > < span class = "p" > .< / span > < span class = "ow" > delete< / span > < span class = "p" > (< / span > < span class = "nx" > vet< / span > < span class = "p" > );< / span >
< a id = "__codelineno-15-60" name = "__codelineno-15-60" href = "#__codelineno-15-60" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-15-61" name = "__codelineno-15-61" href = "#__codelineno-15-61" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-15-62" name = "__codelineno-15-62" href = "#__codelineno-15-62" > < / a >
< a id = "__codelineno-15-63" name = "__codelineno-15-63" href = "#__codelineno-15-63" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 打印邻接表 */< / span >
< a id = "__codelineno-15-64" name = "__codelineno-15-64" href = "#__codelineno-15-64" > < / a > < span class = "w" > < / span > < span class = "nx" > print< / span > < span class = "p" > ()< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "ow" > void< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-15-65" name = "__codelineno-15-65" href = "#__codelineno-15-65" > < / a > < span class = "w" > < / span > < span class = "nx" > console< / span > < span class = "p" > .< / span > < span class = "nx" > log< / span > < span class = "p" > (< / span > < span class = "s2" > " 邻接表 =" < / span > < span class = "p" > );< / span >
< a id = "__codelineno-15-66" name = "__codelineno-15-66" href = "#__codelineno-15-66" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "kd" > const< / span > < span class = "w" > < / span > < span class = "p" > [< / span > < span class = "nx" > key< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > value< / span > < span class = "p" > ]< / span > < span class = "w" > < / span > < span class = "k" > of< / span > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > adjList< / span > < span class = "p" > .< / span > < span class = "nx" > entries< / span > < span class = "p" > ())< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-15-67" name = "__codelineno-15-67" href = "#__codelineno-15-67" > < / a > < span class = "w" > < / span > < span class = "kd" > const< / span > < span class = "w" > < / span > < span class = "nx" > tmp< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "p" > [];< / span >
< a id = "__codelineno-15-68" name = "__codelineno-15-68" href = "#__codelineno-15-68" > < / a > < span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "kd" > const< / span > < span class = "w" > < / span > < span class = "nx" > vertex< / span > < span class = "w" > < / span > < span class = "k" > of< / span > < span class = "w" > < / span > < span class = "nx" > value< / span > < span class = "p" > ){< / span >
< a id = "__codelineno-15-69" name = "__codelineno-15-69" href = "#__codelineno-15-69" > < / a > < span class = "w" > < / span > < span class = "nx" > tmp< / span > < span class = "p" > .< / span > < span class = "nx" > push< / span > < span class = "p" > (< / span > < span class = "nx" > vertex< / span > < span class = "p" > .< / span > < span class = "nx" > val< / span > < span class = "p" > );< / span >
< a id = "__codelineno-15-70" name = "__codelineno-15-70" href = "#__codelineno-15-70" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-15-71" name = "__codelineno-15-71" href = "#__codelineno-15-71" > < / a > < span class = "w" > < / span > < span class = "nx" > console< / span > < span class = "p" > .< / span > < span class = "nx" > log< / span > < span class = "p" > (< / span > < span class = "nx" > key< / span > < span class = "p" > .< / span > < span class = "nx" > val< / span > < span class = "w" > < / span > < span class = "o" > +< / span > < span class = "w" > < / span > < span class = "s2" > " : " < / span > < span class = "w" > < / span > < span class = "o" > +< / span > < span class = "w" > < / span > < span class = "nx" > tmp< / span > < span class = "w" > < / span > < span class = "o" > +< / span > < span class = "w" > < / span > < span class = "s2" > " ," < / span > < span class = "p" > );< / span >
< a id = "__codelineno-15-72" name = "__codelineno-15-72" href = "#__codelineno-15-72" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-15-73" name = "__codelineno-15-73" href = "#__codelineno-15-73" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-15-74" name = "__codelineno-15-74" href = "#__codelineno-15-74" > < / a > < span class = "p" > }< / span >
< / code > < / pre > < / div >
< / div >
< div class = "tabbed-block" >
< div class = "highlight" > < span class = "filename" > graph_adjacency_list.c< / span > < pre > < span > < / span > < code > < a id = "__codelineno-16-1" name = "__codelineno-16-1" href = "#__codelineno-16-1" > < / a > < span class = "p" > [< / span > < span class = "n" > class< / span > < span class = "p" > ]{< / span > < span class = "n" > vertex< / span > < span class = "p" > }< / span > < span class = "o" > -< / span > < span class = "p" > [< / span > < span class = "n" > func< / span > < span class = "p" > ]{}< / span >
< a id = "__codelineno-16-2" name = "__codelineno-16-2" href = "#__codelineno-16-2" > < / a >
< a id = "__codelineno-16-3" name = "__codelineno-16-3" href = "#__codelineno-16-3" > < / a > < span class = "p" > [< / span > < span class = "n" > class< / span > < span class = "p" > ]{< / span > < span class = "n" > graphAdjList< / span > < span class = "p" > }< / span > < span class = "o" > -< / span > < span class = "p" > [< / span > < span class = "n" > func< / span > < span class = "p" > ]{}< / span >
< div class = "highlight" > < span class = "filename" > graph_adjacency_list.c< / span > < pre > < span > < / span > < code > < a id = "__codelineno-16-1" name = "__codelineno-16-1" href = "#__codelineno-16-1" > < / a > < span class = "p" > [< / span > < span class = "n" > class< / span > < span class = "p" > ]{< / span > < span class = "n" > graphAdjList< / span > < span class = "p" > }< / span > < span class = "o" > -< / span > < span class = "p" > [< / span > < span class = "n" > func< / span > < span class = "p" > ]{}< / span >
< / code > < / pre > < / div >
< / div >
< div class = "tabbed-block" >
< div class = "highlight" > < span class = "filename" > graph_adjacency_list.cs< / span > < pre > < span > < / span > < code > < a id = "__codelineno-17-1" name = "__codelineno-17-1" href = "#__codelineno-17-1" > < / a > < span class = "na" > [class]< / span > < span class = "p" > {< / span > < span class = "n" > Vertex< / span > < span class = "p" > }< / span > < span class = "o" > -< / span > < span class = "p" > [< / span > < span class = "n" > func< / span > < span class = "p" > ]{}< / span >
< a id = "__codelineno-17-2" name = "__codelineno-17-2" href = "#__codelineno-17-2" > < / a >
< a id = "__codelineno-17-3" name = "__codelineno-17-3" href = "#__codelineno-17-3" > < / a > < span class = "na" > [class]< / span > < span class = "p" > {< / span > < span class = "n" > GraphAdjList< / span > < span class = "p" > }< / span > < span class = "o" > -< / span > < span class = "p" > [< / span > < span class = "n" > func< / span > < span class = "p" > ]{}< / span >
< div class = "highlight" > < span class = "filename" > graph_adjacency_list.cs< / span > < pre > < span > < / span > < code > < a id = "__codelineno-17-1" name = "__codelineno-17-1" href = "#__codelineno-17-1" > < / a > < span class = "na" > [class]< / span > < span class = "p" > {< / span > < span class = "n" > GraphAdjList< / span > < span class = "p" > }< / span > < span class = "o" > -< / span > < span class = "p" > [< / span > < span class = "n" > func< / span > < span class = "p" > ]{}< / span >
< / code > < / pre > < / div >
< / div >
< div class = "tabbed-block" >
< div class = "highlight" > < span class = "filename" > graph_adjacency_list.swift< / span > < pre > < span > < / span > < code > < a id = "__codelineno-18-1" name = "__codelineno-18-1" href = "#__codelineno-18-1" > < / a > < span class = " p"> [< / span > < span class = "kd" > class< / span > < span class = "p" > ]{< / span > < span class = "n" > Vertex< / span > < span class = "p" > }< / span > < span class = "o" > -< / span > < span class = "p" > [< / span > < span class = "kd" > func< / span > < span class = "p" > ]{} < / span >
< a id = "__codelineno-18-2" name = "__codelineno-18-2" href = "#__codelineno-18-2" > < / a >
< a id = "__codelineno-18-3" name = "__codelineno-18-3" href = "#__codelineno-18-3" > < / a > < span class = "c m"> /* 基于邻接表实现的无向图类 */ < / span >
< a id = "__codelineno-18-4" name = "__codelineno-18-4" href = "#__codelineno-18-4" > < / a > < span class = "kd" > class< / span > < span class = "nc" > GraphAdjList< / span > < span class = "p" > {< / span >
< a id = "__codelineno-18-5" name = "__codelineno-18-5" href = "#__codelineno-18-5" > < / a > < span class = " c1"> // 请注意, vertices 和 adjList 中存储的都是 Vertex 对象 < / span >
< a id = "__codelineno-18-6" name = "__codelineno-18-6" href = "#__codelineno-18-6" > < / a > < span class = "kd" > private< / span > < span class = "kd" > var< / span > < span class = "nv" > adjList< / span > < span class = "p" > :< / span > < span class = "p" > [< / span > < span class = "n" > Vertex< / span > < span class = "p" > :< / span > < span class = "n" > Set< / span > < span class = "p" > < < / span > < span class = "n" > Vertex< / span > < span class = "p" > > ]< / span > < span class = "c1" > // 邻接表(使用哈希表实现)< / span >
< a id = "__codelineno-18-7" name = "__codelineno-18-7" href = "#__codelineno-18-7" > < / a >
< div class = "highlight" > < span class = "filename" > graph_adjacency_list.swift< / span > < pre > < span > < / span > < code > < a id = "__codelineno-18-1" name = "__codelineno-18-1" href = "#__codelineno-18-1" > < / a > < span class = " cm"> /* 基于邻接表实现的无向图类 */ < / span >
< a id = "__codelineno-18-2" name = "__codelineno-18-2" href = "#__codelineno-18-2" > < / a > < span class = "kd" > class< / span > < span class = "nc" > GraphAdjList< / span > < span class = "p" > {< / span >
< a id = "__codelineno-18-3" name = "__codelineno-18-3" href = "#__codelineno-18-3" > < / a > < span class = "c 1"> // 邻接表,使用哈希表来代替链表,以提升删除边、删除顶点的效率 < / span >
< a id = "__codelineno-18-4" name = "__codelineno-18-4" href = "#__codelineno-18-4" > < / a > < span class = "c1" > // 请注意, adjList 中的元素是 Vertex 对象 < / span >
< a id = "__codelineno-18-5" name = "__codelineno-18-5" href = "#__codelineno-18-5" > < / a > < span class = " kd"> private< / span > < span class = "kd" > var< / span > < span class = "nv" > adjList< / span > < span class = "p" > :< / span > < span class = "p" > [< / span > < span class = "n" > Vertex< / span > < span class = "p" > :< / span > < span class = "n" > Set< / span > < span class = "p" > < < / span > < span class = "n" > Vertex< / span > < span class = "p" > > ] < / span >
< a id = "__codelineno-18-6" name = "__codelineno-18-6" href = "#__codelineno-18-6" > < / a >
< a id = "__codelineno-18-7" name = "__codelineno-18-7" href = "#__codelineno-18-7" > < / a > < span class = "cm" > /* 构造方法 */< / span >
< a id = "__codelineno-18-8" name = "__codelineno-18-8" href = "#__codelineno-18-8" > < / a > < span class = "kd" > init< / span > < span class = "p" > (< / span > < span class = "n" > edges< / span > < span class = "p" > :< / span > < span class = "p" > [[< / span > < span class = "n" > Vertex< / span > < span class = "p" > ]])< / span > < span class = "p" > {< / span >
< a id = "__codelineno-18-9" name = "__codelineno-18-9" href = "#__codelineno-18-9" > < / a > < span class = "n" > adjList< / span > < span class = "p" > =< / span > < span class = "p" > [:]< / span >
< a id = "__codelineno-18-10" name = "__codelineno-18-10" href = "#__codelineno-18-10" > < / a > < span class = "c1" > // 添加所有顶点和边< / span >
@ -2680,7 +2662,7 @@
< a id = "__codelineno-18-45" name = "__codelineno-18-45" href = "#__codelineno-18-45" > < / a > < span class = "k" > if< / span > < span class = "n" > adjList< / span > < span class = "p" > [< / span > < span class = "n" > vet< / span > < span class = "p" > ]< / span > < span class = "o" > !=< / span > < span class = "kc" > nil< / span > < span class = "p" > {< / span >
< a id = "__codelineno-18-46" name = "__codelineno-18-46" href = "#__codelineno-18-46" > < / a > < span class = "k" > return< / span >
< a id = "__codelineno-18-47" name = "__codelineno-18-47" href = "#__codelineno-18-47" > < / a > < span class = "p" > }< / span >
< a id = "__codelineno-18-48" name = "__codelineno-18-48" href = "#__codelineno-18-48" > < / a > < span class = "c1" > // 在邻接表中添加一个新链表(即 HashSet) < / span >
< a id = "__codelineno-18-48" name = "__codelineno-18-48" href = "#__codelineno-18-48" > < / a > < span class = "c1" > // 在邻接表中添加一个新链表< / span >
< a id = "__codelineno-18-49" name = "__codelineno-18-49" href = "#__codelineno-18-49" > < / a > < span class = "n" > adjList< / span > < span class = "p" > [< / span > < span class = "n" > vet< / span > < span class = "p" > ]< / span > < span class = "p" > =< / span > < span class = "p" > []< / span >
< a id = "__codelineno-18-50" name = "__codelineno-18-50" href = "#__codelineno-18-50" > < / a > < span class = "p" > }< / span >
< a id = "__codelineno-18-51" name = "__codelineno-18-51" href = "#__codelineno-18-51" > < / a >
@ -2689,9 +2671,9 @@
< a id = "__codelineno-18-54" name = "__codelineno-18-54" href = "#__codelineno-18-54" > < / a > < span class = "k" > if< / span > < span class = "n" > adjList< / span > < span class = "p" > [< / span > < span class = "n" > vet< / span > < span class = "p" > ]< / span > < span class = "p" > ==< / span > < span class = "kc" > nil< / span > < span class = "p" > {< / span >
< a id = "__codelineno-18-55" name = "__codelineno-18-55" href = "#__codelineno-18-55" > < / a > < span class = "bp" > fatalError< / span > < span class = "p" > (< / span > < span class = "s" > " 参数错误" < / span > < span class = "p" > )< / span >
< a id = "__codelineno-18-56" name = "__codelineno-18-56" href = "#__codelineno-18-56" > < / a > < span class = "p" > }< / span >
< a id = "__codelineno-18-57" name = "__codelineno-18-57" href = "#__codelineno-18-57" > < / a > < span class = "c1" > // 在邻接表中删除顶点 vet 对应的链表(即 HashSet) < / span >
< a id = "__codelineno-18-57" name = "__codelineno-18-57" href = "#__codelineno-18-57" > < / a > < span class = "c1" > // 在邻接表中删除顶点 vet 对应的链表< / span >
< a id = "__codelineno-18-58" name = "__codelineno-18-58" href = "#__codelineno-18-58" > < / a > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "n" > removeValue< / span > < span class = "p" > (< / span > < span class = "n" > forKey< / span > < span class = "p" > :< / span > < span class = "n" > vet< / span > < span class = "p" > )< / span >
< a id = "__codelineno-18-59" name = "__codelineno-18-59" href = "#__codelineno-18-59" > < / a > < span class = "c1" > // 遍历其它顶点的链表(即 HashSet) ,删除所有包含 vet 的边< / span >
< a id = "__codelineno-18-59" name = "__codelineno-18-59" href = "#__codelineno-18-59" > < / a > < span class = "c1" > // 遍历其它顶点的链表,删除所有包含 vet 的边< / span >
< a id = "__codelineno-18-60" name = "__codelineno-18-60" href = "#__codelineno-18-60" > < / a > < span class = "k" > for< / span > < span class = "n" > key< / span > < span class = "k" > in< / span > < span class = "n" > adjList< / span > < span class = "p" > .< / span > < span class = "n" > keys< / span > < span class = "p" > {< / span >
< a id = "__codelineno-18-61" name = "__codelineno-18-61" href = "#__codelineno-18-61" > < / a > < span class = "n" > adjList< / span > < span class = "p" > [< / span > < span class = "n" > key< / span > < span class = "p" > ]?.< / span > < span class = "n" > remove< / span > < span class = "p" > (< / span > < span class = "n" > vet< / span > < span class = "p" > )< / span >
< a id = "__codelineno-18-62" name = "__codelineno-18-62" href = "#__codelineno-18-62" > < / a > < span class = "p" > }< / span >
@ -2712,9 +2694,7 @@
< / code > < / pre > < / div >
< / div >
< div class = "tabbed-block" >
< div class = "highlight" > < span class = "filename" > graph_adjacency_list.zig< / span > < pre > < span > < / span > < code > < a id = "__codelineno-19-1" name = "__codelineno-19-1" href = "#__codelineno-19-1" > < / a > < span class = "p" > [< / span > < span class = "n" > class< / span > < span class = "p" > ]{< / span > < span class = "n" > Vertex< / span > < span class = "p" > }< / span > < span class = "o" > -< / span > < span class = "p" > [< / span > < span class = "n" > func< / span > < span class = "p" > ]{}< / span >
< a id = "__codelineno-19-2" name = "__codelineno-19-2" href = "#__codelineno-19-2" > < / a >
< a id = "__codelineno-19-3" name = "__codelineno-19-3" href = "#__codelineno-19-3" > < / a > < span class = "p" > [< / span > < span class = "n" > class< / span > < span class = "p" > ]{< / span > < span class = "n" > GraphAdjList< / span > < span class = "p" > }< / span > < span class = "o" > -< / span > < span class = "p" > [< / span > < span class = "n" > func< / span > < span class = "p" > ]{}< / span >
< div class = "highlight" > < span class = "filename" > graph_adjacency_list.zig< / span > < pre > < span > < / span > < code > < a id = "__codelineno-19-1" name = "__codelineno-19-1" href = "#__codelineno-19-1" > < / a > < span class = "p" > [< / span > < span class = "n" > class< / span > < span class = "p" > ]{< / span > < span class = "n" > GraphAdjList< / span > < span class = "p" > }< / span > < span class = "o" > -< / span > < span class = "p" > [< / span > < span class = "n" > func< / span > < span class = "p" > ]{}< / span >
< / code > < / pre > < / div >
< / div >
< / div >
@ -2865,13 +2845,13 @@
< a href = "../ ../chapter_searching/linear_search /" class = "md-footer__link md-footer__link--next" aria-label = "下一页: 10.1. 线性查找 " rel = "next" >
< a href = "../ graph_traversal /" class = "md-footer__link md-footer__link--next" aria-label = "下一页: 9.3. 图的遍历 " rel = "next" >
< div class = "md-footer__title" >
< div class = "md-ellipsis" >
< span class = "md-footer__direction" >
下一页
< / span >
10.1. 线性查找
9.3. 图的遍历
< / div >
< / div >
< div class = "md-footer__button md-icon" >