public boolean removeVertex(V v) {
    // zun�chst alle Kanten mit Knoten v als Startknoten entfernen
    Integer IIndex = vertexIndex.get(v.getId());
    if (IIndex == null) {
      return false;
    }
    int index = IIndex;
    adjList.get(index).clear();

    // dann alle Kanten mit Knoten v als Endknoten entfernen
    for (LinkedList<E> list : adjList) {
      ListIterator<E> it = list.listIterator();
      while (it.hasNext()) {
        Edge e = it.next();
        if (e.getVertexB().getId() == v.getId()) {
          it.remove();
          break;
        }
      }
    }

    // Knoten v aus ArrayList entfernen, indem Eintrag in ArrayList auf null
    // gesetzt wird; ansonsten w�rden Indices anderer Knoten nicht mehr
    // stimmen.
    vertices.set(index, null);

    // nun Knoten aus Indexliste entfernen
    vertexIndex.remove(v.getId());
    return true;
  }