package Graph; import java.util.ArrayList; import java.util.LinkedList; public class Graph { // classe de graphe non orientés permettant de manipuler // en même temps des arcs (orientés) // pour pouvoir stocker un arbre couvrant, en plus du graphe public int order; public int upperBound; int edgeCardinality; ArrayList<LinkedList<Edge>> incidency; ArrayList<LinkedList<Arc>> inIncidency; ArrayList<LinkedList<Arc>> outIncidency; public Graph(int upperBound) { // Au début, upperBound==order // Ensuite, on pourrait retirer des sommets du graphe. // Ainsi, on pourrait avoir upperBound > order // Cette modification de la classe devient nécessaire // si vous implémentez // ou l'algorithme de génération d'arbre couvrant // par suppression de sommet, ou l'opération de contraction d’arête. // Autrement, on pourra asssumer que upperBound==order. // à compléter } public boolean isVertex(int vertex) { // Après avori supprimé certains sommets // pas tous le sommets numerotés 0,...,n-1 sont 'vivant'. // à compléter return true; } public void addVertex(int vertex) { // à compléter } public void deleteVertex(int vertex){ // à compléter } public void ensureVertex(int vertex) { // Synonime de addVertex ? // à compléter } public void addArc(Arc arc) { // à compléter } public void addEdge(Edge edge) { // à compléter } public Arc[] outEdges(int vertex) { // à modifier, si nécessaire // Pour la prochaine ligne voir // https://www.baeldung.com/java-collection-toarray-methods return outIncidency.get(vertex).toArray(new Arc[0]); } }