## com.google.javascript.jscomp.graph
Class LinkedUndirectedGraph<N,E>

    java.lang.Object
      com.google.javascript.jscomp.graph.Graph<N,E>
          com.google.javascript.jscomp.graph.UndiGraph<N,E>
              com.google.javascript.jscomp.graph.LinkedUndirectedGraph<N,E>

Type Parameters:
  `N` - Value type that the graph node stores.
  `E` - Value type that the graph edge stores.

All Implemented Interfaces:
  AdjacencyGraph<N,E>, GraphvizGraph

    public class LinkedUndirectedGraph<N,E>

extends UndiGraph<N,E>
implements GraphvizGraph

An undirected graph using linked list within nodes to store edge information.

Nested Class Summary

Nested classes/interfaces inherited from class com.google.javascript.jscomp.graph.UndiGraph
`UndiGraph.UndiGraphEdge<N,E>, UndiGraph.UndiGraphNode<N,E>`

Nested classes/interfaces inherited from class com.google.javascript.jscomp.graph.Graph
`Graph.GraphEdge<N,E>`

Nested classes/interfaces inherited from interface com.google.javascript.jscomp.graph.GraphvizGraph
`GraphvizGraph.GraphvizEdge, GraphvizGraph.GraphvizNode`

Field Summary
`protected Map<N,com.google.javascript.jscomp.graph.LinkedUndirectedGraph.LinkedUndirectedGraphNode<N,E>>` | `nodes`

Constructor Summary
`protected` | `LinkedUndirectedGraph(boolean useNodeAnnotations, boolean useEdgeAnnotations)`

Method Summary
`void` | `connect(N srcValue, E edgeValue, N destValue)` Connects two nodes in the graph with an edge.

`static

`<N,E> LinkedUndirectedGraph<N,E>`

`

`create()`

`GraphNode<N,E>` | `createNode(N value)` Gets a node from the graph given a value.
`UndiGraph.UndiGraphNode<N,E>` | `createUndirectedGraphNode(N nodeValue)`

`static

`<N,E> LinkedUndirectedGraph<N,E>`

`

`createWithEdgeAnnotations()`

`static

`<N,E> LinkedUndirectedGraph<N,E>`

`

`createWithNodeAnnotations()`

`static

`<N,E> LinkedUndirectedGraph<N,E>`

`

`createWithoutAnnotations()`

`void` | `disconnect(N srcValue, N destValue)` Disconnects two nodes in the graph by removing all edges between them.
`List<Graph.GraphEdge<N,E>>` | `getEdges()` Gets an immutable list of all edges.
`List<Graph.GraphEdge<N,E>>` | `getEdges(N n1, N n2)` Retrieves an edge from the graph.
`Graph.GraphEdge<N,E>` | `getFirstEdge(N n1, N n2)` Retrieves any edge from the graph.
`List<GraphvizGraph.GraphvizEdge>` | `getGraphvizEdges()` Retrieve a list of edges in the graph.
`List<GraphvizGraph.GraphvizNode>` | `getGraphvizNodes()` Retrieve a list of nodes in the graph.
`String` | `getName()` Name of the graph.
`List<GraphNode<N,E>>` | `getNeighborNodes(N value)` Gets the neighboring nodes.
`Iterator<GraphNode<N,E>>` | `getNeighborNodesIterator(N value)`
`GraphNode<N,E>` | `getNode(N value)` Gets a node from the graph given a value.
`int` | `getNodeDegree(N value)` Gets the degree of a node.
`Collection<GraphNode<N,E>>` | `getNodes()` Gets an immutable list of all nodes.
`List<UndiGraph.UndiGraphEdge<N,E>>` | `getUndirectedGraphEdges(N n1, N n2)`
`UndiGraph.UndiGraphNode<N,E>` | `getUndirectedGraphNode(N nodeValue)`
`Collection<UndiGraph.UndiGraphNode<N,E>>` | `getUndirectedGraphNodes()` Gets an immutable collection of all the nodes in this graph.
`boolean` | `isConnected(N n1, E e, N n2)` Checks whether two nodes in the graph are connected by the given edge type.
`boolean` | `isConnected(N n1, N n2)` Checks whether two nodes in the graph are connected.
`boolean` | `isDirected()` Graph type.
`SubGraph<N,E>` | `newSubGraph()` Returns an empty SubGraph for this Graph.

Methods inherited from class com.google.javascript.jscomp.graph.Graph
`clearEdgeAnnotations, clearNodeAnnotations, connectIfNotFound, getWeight, hasNode, popEdgeAnnotations, popNodeAnnotations, pushEdgeAnnotations, pushNodeAnnotations`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### nodes

    protected final Map<N,com.google.javascript.jscomp.graph.LinkedUndirectedGraph.LinkedUndirectedGraphNode<N,E>> nodes

Constructor Detail

### LinkedUndirectedGraph

    protected LinkedUndirectedGraph(boolean useNodeAnnotations,
                                    boolean useEdgeAnnotations)

Method Detail

### newSubGraph

    public SubGraph<N,E> newSubGraph()

  Description copied from interface: `AdjacencyGraph`
  Returns an empty SubGraph for this Graph.

  Specified by:
    `newSubGraph` in interface `AdjacencyGraph<N,E>`

### createWithoutAnnotations

    public static <N,E> LinkedUndirectedGraph<N,E> createWithoutAnnotations()

### createWithNodeAnnotations

    public static <N,E> LinkedUndirectedGraph<N,E> createWithNodeAnnotations()

### createWithEdgeAnnotations

    public static <N,E> LinkedUndirectedGraph<N,E> createWithEdgeAnnotations()

### create

    public static <N,E> LinkedUndirectedGraph<N,E> create()

### connect

    public void connect(N srcValue,
                        E edgeValue,
                        N destValue)

  Description copied from class: `Graph`
  Connects two nodes in the graph with an edge.

  Specified by:
    `connect` in class `Graph<N,E>`
  Parameters:
    `srcValue` - First node.
    `edgeValue` - The edge.
    `destValue` - Second node.

### disconnect

    public void disconnect(N srcValue,
                           N destValue)

  Description copied from class: `Graph`
  Disconnects two nodes in the graph by removing all edges between them.

  Specified by:
    `disconnect` in class `Graph<N,E>`
  Parameters:
    `srcValue` - First node.
    `destValue` - Second node.

### createUndirectedGraphNode

    public UndiGraph.UndiGraphNode<N,E> createUndirectedGraphNode(N nodeValue)

### getNeighborNodes

    public List<GraphNode<N,E>> getNeighborNodes(N value)

  Description copied from class: `Graph`
  Gets the neighboring nodes.

  Specified by:
    `getNeighborNodes` in class `Graph<N,E>`
  Parameters:
    `value` - The node's value.
  Returns:
    A list of neighboring nodes.

### getNeighborNodesIterator

    public Iterator<GraphNode<N,E>> getNeighborNodesIterator(N value)

  Specified by:
    `getNeighborNodesIterator` in class `Graph<N,E>`

### getUndirectedGraphEdges

    public List<UndiGraph.UndiGraphEdge<N,E>> getUndirectedGraphEdges(N n1,
                                                                      N n2)

### getUndirectedGraphNode

    public UndiGraph.UndiGraphNode<N,E> getUndirectedGraphNode(N nodeValue)

  Specified by:
    `getUndirectedGraphNode` in class `UndiGraph<N,E>`

### getUndirectedGraphNodes

    public Collection<UndiGraph.UndiGraphNode<N,E>> getUndirectedGraphNodes()

  Description copied from class: `UndiGraph`
  Gets an immutable collection of all the nodes in this graph.

### createNode

    public GraphNode<N,E> createNode(N value)

  Description copied from class: `Graph`
  Gets a node from the graph given a value. New nodes are created if that value has not been assigned a graph node. Values equality are compared using `Object.equals`.

  Specified by:
    `createNode` in class `Graph<N,E>`
  Parameters:
    `value` - The node's value.
  Returns:
    The corresponding node in the graph.

### getEdges

    public List<Graph.GraphEdge<N,E>> getEdges(N n1,
                                               N n2)

  Description copied from class: `Graph`
  Retrieves an edge from the graph.

  Specified by:
    `getEdges` in class `Graph<N,E>`
  Parameters:
    `n1` - Node one.
    `n2` - Node two.
  Returns:
    The list of edges between those two values in the graph.

### getFirstEdge

    public Graph.GraphEdge<N,E> getFirstEdge(N n1,
                                             N n2)

  Description copied from class: `Graph`
  Retrieves any edge from the graph.

  Specified by:
    `getFirstEdge` in class `Graph<N,E>`
  Parameters:
    `n1` - Node one.
    `n2` - Node two.
  Returns:
    The first edges between those two values in the graph. null if there are none.

### getNode

    public GraphNode<N,E> getNode(N value)

  Description copied from interface: `AdjacencyGraph`
  Gets a node from the graph given a value. Values equality are compared using `Object.equals`.

  Specified by:
    `getNode` in interface `AdjacencyGraph<N,E>`
  Parameters:
    `value` - The node's value.
  Returns:
    The corresponding node in the graph, null if there value has no corresponding node.

### isConnected

    public boolean isConnected(N n1,
                               N n2)

  Description copied from class: `Graph`
  Checks whether two nodes in the graph are connected.

  Specified by:
    `isConnected` in class `Graph<N,E>`
  Parameters:
    `n1` - Node 1.
    `n2` - Node 2.
  Returns:
    `true` if the two nodes are connected.

### isConnected

    public boolean isConnected(N n1,
                               E e,
                               N n2)

  Description copied from class: `Graph`
  Checks whether two nodes in the graph are connected by the given edge type.

  Specified by:
    `isConnected` in class `Graph<N,E>`
  Parameters:
    `n1` - Node 1.
    `e` - The edge type.
    `n2` - Node 2.

### getGraphvizEdges

    public List<GraphvizGraph.GraphvizEdge> getGraphvizEdges()

  Description copied from interface: `GraphvizGraph`
  Retrieve a list of edges in the graph.

  Specified by:
    `getGraphvizEdges` in interface `GraphvizGraph`
  Returns:
    A list of edges in the graph.

### getName

    public String getName()

  Description copied from interface: `GraphvizGraph`
  Name of the graph.

  Specified by:
    `getName` in interface `GraphvizGraph`
  Returns:
    Name of the graph.

### getGraphvizNodes

    public List<GraphvizGraph.GraphvizNode> getGraphvizNodes()

  Description copied from interface: `GraphvizGraph`
  Retrieve a list of nodes in the graph.

  Specified by:
    `getGraphvizNodes` in interface `GraphvizGraph`
  Returns:
    A list of nodes in the graph.

### isDirected

    public boolean isDirected()

  Description copied from interface: `GraphvizGraph`
  Graph type.

  Specified by:
    `isDirected` in interface `GraphvizGraph`
  Returns:
    True if the graph is a directed graph.

### getNodes

    public Collection<GraphNode<N,E>> getNodes()

  Description copied from class: `Graph`
  Gets an immutable list of all nodes.

  Specified by:
    `getNodes` in interface `AdjacencyGraph<N,E>`
  Specified by:
    `getNodes` in class `Graph<N,E>`

### getEdges

    public List<Graph.GraphEdge<N,E>> getEdges()

  Description copied from class: `Graph`
  Gets an immutable list of all edges.

  Specified by:
    `getEdges` in class `Graph<N,E>`

### getNodeDegree

    public int getNodeDegree(N value)

  Description copied from class: `Graph`
  Gets the degree of a node.

  Specified by:
    `getNodeDegree` in class `Graph<N,E>`
  Parameters:
    `value` - The node's value.
  Returns:
    The degree of the node.