O único código que não coloquei é a main, os demais códigos são outros métodos sem relação alguma com esse método:
CLASSE PRINCIPAL:
#include <stdio.h>
#include <stdlib.h>
#include "ListaAdj.h"
int main(){
TipoGrafo grafo;
int nv = 10;
printf("\nInicializando grafo...");
bool iniciou = inicializaGrafo(&grafo, nv);
if (iniciou){
printf("\nInicializado com sucesso!\n");
}else{
printf("\nNao foi possivel inicializar.\n");
}
printf("\nInserindo uma aresta...");
insereAresta(1,2,5,&grafo);
printf("\nAresta inserida com sucesso!\n");
printf("\nVerificando se existe aresta entre 1 e 2...");
bool existe = existeAresta(1,2,&grafo);
if(existe){
printf("\nExiste!\n");
}
else{
printf("\nNao existe.\n");
}
return 0;
}
..... (outros métodos)
bool existeAresta(int v1, int v2, TipoGrafo *grafo){
TipoApontador *p;
p = (TipoApontador*)malloc(sizeof(TipoApontador));
*p = grafo->listaAdj[v1];
while(p){
if (p->vdest == v2){
return true;
}
p = p->prox;
}
free(p);
return false;
}
************************************
HEADER:
#include <stdbool.h> /* variaveis bool assumem valores "true" ou "false" */
typedef int TipoPeso;
/*
tipo estruturado taresta:
vertice destino, peso, ponteiro p/ prox. aresta
*/
typedef struct taresta {
int vdest;
TipoPeso peso;
struct taresta * prox;
} TipoAresta;
typedef TipoAresta* TipoApontador;
/*
tipo estruturado grafo:
vetor de listas de adjacencia (cada posicao contem o ponteiro
para o inicio da lista de adjacencia do vertice)
numero de vertices
*/
typedef struct {
TipoApontador *listaAdj;
int numVertices;
int numArestas;
} TipoGrafo;
......(outros métodos)
/*
bool existeAresta(int v1, int v2, TipoGrafo *grafo):
Retorna true se existe a aresta (v1, v2) no grafo e false caso contrário
*/
bool existeAresta(int v1, int v2, TipoGrafo *grafo);