Вы почти поняли это!
Предполагая, что в вашей матрице смежности значение 0 означает, что нет ребра, а значение больше 0 означает, что есть ребро с таким весом.
Метод removeEdge
не нуждается в weight
, поскольку он удаляет ребро. Установка в 0 здесь правильна, так как 0 означает «без края».
public void removeEdge (int source, int destination) {
if (source < size && source >= 0 && destination < size && destination >= 0)
adjacentMatrix [source][destination] = 0;
}
}
Поскольку вам сказали указать параметр weight
, возможно, вы должен удалять ребро только в том случае, если вес соответствует переданному в весе?
Метод isEdge
должен проверять adjacentMatrix[source][destination] > 0
вместо adjacentMatrix[source][destination] == 1
, так как любое положительное значение означает «есть ребро».
public boolean isEdge(int source, int destination) {
if(size >= 0 && size < size && destination >= 0 && destination < size) {
return adjacentMatrix[source][destination] > 0;
} else {
return false; // if out of range, no edge
}
}