Skip to content

Commit

Permalink
Ajustes
Browse files Browse the repository at this point in the history
  • Loading branch information
hfcipriano committed Nov 6, 2016
1 parent e9a5423 commit c56134d
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 45 deletions.
73 changes: 32 additions & 41 deletions scr/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,14 @@
extern lista *newLista();
extern grafo *inicGrafo();
extern node *newNode(void*);
extern arco *newArco(int, int);
extern void *insArco(grafo*, int, int, int);

void exemploGrafoAciclico();
void exemploGrafoCiclico();

int main(){
printf("1 equivale à VERDADEIRO; 2 equivale à FALSO\n\n");
printf("1 equivale à VERDADEIRO; 0 equivale à FALSO\n\n");

exemploGrafoAciclico();
exemploGrafoCiclico();
Expand All @@ -24,60 +25,50 @@ int main(){
void exemploGrafoAciclico(){
printf("Grafo Aciclico\n");

//TODO: Refactoring
/*grafo *g = inicGrafo();
g->addAresta(g, newNode(newAresta(newVertice("1"), newVertice("2"))));
g->addAresta(g, newNode(newAresta(newVertice("1"), newVertice("5"))));
g->addAresta(g, newNode(newAresta(newVertice("1"), newVertice("4"))));
g->addAresta(g, newNode(newAresta(newVertice("2"), newVertice("5"))));
g->addAresta(g, newNode(newAresta(newVertice("3"), newVertice("6"))));
g->addAresta(g, newNode(newAresta(newVertice("4"), newVertice("6"))));
g->addAresta(g, newNode(newAresta(newVertice("4"), newVertice("7"))));
g->addAresta(g, newNode(newAresta(newVertice("5"), newVertice("7"))));
g->addAresta(g, newNode(newAresta(newVertice("6"), newVertice("8"))));
g->addAresta(g, newNode(newAresta(newVertice("7"), newVertice("8"))));
aresta *aresta = newAresta(newVertice("1"), newVertice("8"));
grafo *g = inicGrafo();

//Task 1-2
printf("%d", g->existeCaminho(g, aresta));
g->insArco(g, 3, 6, 0);
g->insArco(g, 6, 8, 0);
g->insArco(g, 1, 2, 0);
g->insArco(g, 1, 5, 0);
g->insArco(g, 1, 4, 0);
g->insArco(g, 4, 6, 0);
g->insArco(g, 4, 7, 0);
g->insArco(g, 2, 5, 0);
g->insArco(g, 5, 7, 0);
g->insArco(g, 7, 8, 0);

//Task 3
printf("\n%d", g->existeCiclo(g, newVertice("1")));

arco *arco = newArco(3, 8);

//Task 1-2
printf("Existe caminho: %d", g->existeCaminho(g, arco));

//Task 4
g->exibeCaminhos(g, aresta);*/
g->exibeCaminhos(g, arco);
}

void exemploGrafoCiclico(){
printf("Grafo Ciclico\n");
printf("\nGrafo Ciclico\n");

//TODO: Refactoring
/*grafo *g = inicGrafo();
grafo *g = inicGrafo();
g->insArco(g, 1, 2, 3);
g->insArco(g, 2, 1, 3);
g->insArco(g, 2, 3, x);
g->insArco(g, 2, 5, x);
g->insArco(g, 3, 4, x);
g->insArco(g, 4, 2, x);
g->insArco(g, 4, 5, x);
g->insArco(g, 4, 6, x);
g->addAresta(g, newNode(newAresta(newVertice("2"), newVertice("1"))));
g->addAresta(g, newNode(newAresta(newVertice("2"), newVertice("3"))));
g->addAresta(g, newNode(newAresta(newVertice("2"), newVertice("5"))));
g->addAresta(g, newNode(newAresta(newVertice("3"), newVertice("4"))));
g->addAresta(g, newNode(newAresta(newVertice("4"), newVertice("2"))));
g->addAresta(g, newNode(newAresta(newVertice("4"), newVertice("5"))));
g->addAresta(g, newNode(newAresta(newVertice("4"), newVertice("6"))));
aresta *aresta = newAresta(newVertice("1"), newVertice("2"));
g->insArco(g, 2, 3, 0);
g->insArco(g, 2, 5, 0);
g->insArco(g, 3, 4, 0);
g->insArco(g, 4, 2, 0);
g->insArco(g, 4, 5, 0);
g->insArco(g, 4, 6, 0);

arco *arco = newArco(3, 5);

//Task 1-2
printf("%d", g->existeCaminho(g, aresta));
printf("Existe caminho: %d", g->existeCaminho(g, arco));

//Task 3
printf("\n%d", g->existeCiclo(g, newVertice("5")));
printf("\nExiste ciclo: %d", g->existeCiclo(g, 4));

//Task 4
g->exibeCaminhos(g, aresta);*/
g->exibeCaminhos(g, arco);
}
12 changes: 8 additions & 4 deletions scr/tad/grafo/grafo.c
Original file line number Diff line number Diff line change
Expand Up @@ -187,13 +187,13 @@ int buscarRelacao(lista *arestas, lista *antecessores, int sucessor) {
node *n = antecessores->raiz;
while(n != NULL){
arco *arco= n->elemento;
if(arco->sucessor->valor == sucessor){
return bool_TRUE;
}
if(arco->antecessor->bool_marcardo){
return bool_FALSE;
}
arco->antecessor->bool_marcardo = bool_TRUE;
if(arco->sucessor->valor == sucessor){
return bool_TRUE;
}
if(buscarRelacao(arestas, obterAntecessores(arestas, arco->sucessor), sucessor)){
return bool_TRUE;
}
Expand Down Expand Up @@ -234,6 +234,7 @@ lista *buscarRelacaoCompleta(lista *arestas, lista *antecessores, vertice *suces
* @return 1 para verdadeiro e 0 para falso
*/
int existeCaminho(grafo *g, arco *a){
desmarcarGrafo(g);
node *n = g->arcos->raiz;
while(n != NULL){
arco *arco= n->elemento;
Expand All @@ -257,6 +258,7 @@ int existeCaminho(grafo *g, arco *a){
* @return 1 para Verdadeiro e 0 para falso
*/
int existeCiclo(grafo *g, int v){
desmarcarGrafo(g);
lista *antecessores = obterAntecessores(g->arcos, newVertice(v));
return buscarRelacao(g->arcos, antecessores, v);
}
Expand All @@ -267,5 +269,7 @@ int existeCiclo(grafo *g, int v){
* @param a Aresta
*/
void exibeCaminhos(grafo *g, arco *a){
desmarcarGrafo(g);
printCaminhos(buscarRelacaoCompleta(g->arcos, obterAntecessores(g->arcos, a->antecessor), a->sucessor, newLista()));
}
}

0 comments on commit c56134d

Please sign in to comment.