@@ -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" >
@@ -1110,6 +1110,8 @@
< label class = "md-nav__link" for = "__nav_10" id = "__nav_10_label" tabindex = "0" >
@@ -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 " > v et1 < / 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" > adjLis t< / 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" > v et< / 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" > add Vertex< / 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 " > r eturn < / 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 " > ou t< / 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 " > entryS et< / 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 = "n c" > 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" > addEdg e< / 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" > adjLis t< / 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" > V ertex < / 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" > ins ert< / 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" > V ertex < / 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 " > v et1 < / 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_se t< / 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" > i f< / 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" > ve t< / 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" > siz e< / 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_argumen t< / 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 " > ins ert< / 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" > V ertex < / 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" > V ertex < / 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 " > r eturn < / 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" > co unt< / 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" > adjLis t< / 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 = "kd " > 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" > 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-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 " > in t< / 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 = "nb " > 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" > addEdge < / 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-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 " > struc t< / 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 = "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" > 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 = "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-48" name = "__codelineno-13-48" href = "#__codelineno-13-48" > < / 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" > 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 = "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-48" name = "__codelineno-13-48" href = "#__codelineno-13-48" > < / 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-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" > 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-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 " > mak e< / 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" > s et< / 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" > addV ertex< / 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 " > rang e< / 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" > v et< / 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" > adjList < / 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 = "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-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" > addEdg e< / 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-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" > 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-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" > siz e< / 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 = "o w" > 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 " > del ete < / 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" > ve t< / 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" > ve t< / 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" > se t< / span > < span class = "p" > . < / span > < span class = "o w" > 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" > addEdg e< / 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 = "o w" > 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 " > v et< / 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" > adjLis t< / 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" > adjLis t< / span > < span class = "p" > . < / span > < span class = "o w" > 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" > prin t< / 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 = "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-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" > addEdg e< / 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-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 = "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-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" > 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-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" > Ver tex < / 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" > adjLis t< / 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 = "o w" > 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 " > del ete < / 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" > ve t< / 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" > ve t< / span > < span class = "o " > : < / span > < span class = "w" > < / span > < span class = "kt" > Ver tex < / 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" > se t< / 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" > addEdg e< / 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 = "o w" > dele te< / 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" > ve t< / 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 " > v et< / 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" > adjLis t< / 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" > adjLis t< / span > < span class = "p " > . < / span > < span class = "o w" > dele te< / 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" > prin t< / 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 = "cm " > /* 基于邻接表实现的无向图类 */ < / span >
< a id = "__codelineno-18-4" name = "__codelineno-18-4" href = "#__codelineno-18-4" > < / a > < span class = "kd" > class < / span > < span class = "n c" > 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 = "c1 " > // 邻接表,使用哈希表来代替链表,以提升删除边、删除顶点的效率 < / 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" >