internal override void UpdateEdgeData(AdjListGraphVertex <T> vertex1, AdjListGraphVertex <T> vertex2, Func <EdgeData, EdgeData> updateFunc)
        {
            ListNode node1 = FindEdgeNode(vertex1, vertex2);
            ListNode node2 = FindEdgeNode(vertex2, vertex1);

            node1.EdgeData = node2.EdgeData = updateFunc(node1.EdgeData);
        }
 internal override void CreateEdge(AdjListGraphVertex <T> vertex1, AdjListGraphVertex <T> vertex2, double weight)
 {
     InsertListNode(List[vertex1.Handle], new ListNode(vertex2), weight);
     if (!ReferenceEquals(vertex1, vertex2))
     {
         InsertListNode(List[vertex2.Handle], new ListNode(vertex1), weight);
     }
 }