-
Notifications
You must be signed in to change notification settings - Fork 0
/
Grafos.h
89 lines (72 loc) · 1.68 KB
/
Grafos.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#ifndef _GRAFOS_
#define _GRAFOS_
#include "Lista.h"
#include <stdlib.h>
//LISTA DE ADIJACÊNCIA
typedef struct grafoLA {
int V; // Número de vétices
Lista *L; //Lista de adjacencia
}*GrafoLA;
//MATRIZ DE INCIDÊNCIA
typedef struct grafoMI{
int V;
int A;
int **mat;
}*GrafoMI;
//MATRIZ DE ADJACÊNCIA
typedef struct grafoMA{
int V; //Vertices
int nV; //Número de vertices
int A; //Número de arestas que o grafo possui;
int **mat;
}*GrafoMA;
GrafoMA criarGrafo(){
return NULL;
}
/*
//Cria Matriz vazia
GrafoMA MAinit(int tam, int *valores) {
GrafoMA G = malloc(sizeof *G);
G->nV = tam;
G->A = 0;
G->V = valores;
int **m = malloc(tam * sizeof (int *));
for (int i = 0; i < tam; ++i) {
m[i] = malloc( tam* sizeof (int));
}
for (int i = 0; i < tam; ++i)
for (int j = 0; j < tam; ++j)
m[i][j] = 0;
G->mat = m;
return G;
}
int Inserir(GrafoMA G, int v1,int v2){
if(G->mat[v1][v2] == 0){
return G->mat[v1][v2] == 1;
}else
printf("\n\n \t[ERROR]Já existe a aresta entre %d e %d\n\n", v1,v2);
return 0;
}
void Remover(GrafoMA *G, int v1,int v2){
if((*G)->mat[v1][v2] == 1){
(*G)->mat[v1][v2] == 0;
(*G)->A--;
}else
printf("\n\n \t[ERROR]Não existe a aresta entre %d e %d\n\n", v1,v2);
}
void Imprime(GrafoMA G){
printf("\n");
for(int i = 0; i< G->nV; ++i)
printf("\tV%d", i);
for(int i = 0; i< G->nV; i++){
printf("\n V%d\t",i);
for(int j= 0; j< G->nV; j++ )
printf("%d\t",G->mat[i][j]);
}
printf("\n\n");
for(int i = 0; i< G->nV; ++i)
printf("V%d = %d\t", i, G->V[i]);
printf("\n");
}
*/
#endif