//-----Função que remove uma aresta do grafo. public void Remover_Aresta(Vertice cidade, Vertice cidadeAdj, int aux) { if (numArestas > 0) { A = new Aresta(); //-----Percorrendo a lista de adjacências dos vértices para exluir as arestas. foreach (var x in cidade.ListaAdj) { if (x.VerticeAdj == cidadeAdj) { A = x; break; } } //-----Removendo a aresta da lista de adjacências do vértice. cidade.ListaAdj.Remove(A); cidade.Grau--; aux++; //-----Já que o grafo é não direcionado, é necessário excluir a aresta na lista de adjacências dos dois vértices. if (aux < 2) { Remover_Aresta(cidadeAdj, cidade, aux); } else { numArestas--; } } }
//-----Função que insere uma aresta no grafo. public void Inserir_Aresta(Vertice cidade, Vertice cidadeAdj, double distancia, int aux) { A = new Aresta(); A.ID = _IDA; A.VerticeAdj = cidadeAdj; A.Peso = distancia; //-----Adicionando aresta na lista de adjacências de dois vértices (Grafo não direcionado). cidade.ListaAdj.Add(A); cidade.Grau++; aux++; //-----Já que o grafo é não direcionado, é necessário inserir a aresta na lista de adjacências dos dois vértices. if (aux < 2) { Inserir_Aresta(cidadeAdj, cidade, distancia, aux); } else { _IDA++; numArestas++; } }