Works for every possible cases

	// remove A from its outgoing vertices' InVertexList
	// traverse all outgoing vertices
	var next3 *list.Element
	for vtx1 := A.GetOutVertexList().Front(); vtx1 != nil; vtx1 = next3 {
		next3 = vtx1.Next()
		// traverse each vertex's InVertexList
		var next4 *list.Element
		for vtx2 := vtx1.Value.(*VertexT).GetInVertexList().Front(); vtx2 !=
nil; vtx2 = next4 {
			next4 = vtx2.Next()
			// check if the vertex is the one we delete
			if vtx2.Value.(*VertexT) == A {
				vtx1.Value.(*VertexT).GetInVertexList().Remove(vtx2)
			}
		}
	}

Took 5 hours to figure this out.
Make sure not to delete the next element when performing deletion in
linked list.