TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Gerencia de memoria

Por:   •  29/11/2015  •  Trabalho acadêmico  •  264 Palavras (2 Páginas)  •  216 Visualizações

Página 1 de 2

/*

* Implementação de grafos não dirigidos utilizando uma

* matriz de adjacências (apenas o triângulo inferior).

*/

#include <stdlib.h>

typedef struct grafo {

int n; /* Número de nós */

int **mat; /* Matriz (a ser alocada dinamicamente) */

} Grafo;

void cria_grafo(Grafo* g, int n) {

int i;

g->mat = calloc (n, sizeof(int*));

g->mat[0] = NULL;

for (i = 1; i < n; i++)

g->mat = calloc (i, sizeof(int));

g->n = n;

}

void destroi(Grafo *g) {

int i;

for (i = 1; i < g->n; i++)

free(g->mat[i]);

free(g->mat);

}

void adiciona_aresta(Grafo *g, int v1, int v2) {

if (v1 > v2)

g->mat[v1][v2] = 1;

else

g->mat[v2][v1] = 1;

}

int existe_aresta(Grafo *g, int v1, int v2) {

return v1 > v2 ? g->mat[v1][v2] : g->mat[v2][v1];

}

void remove_aresta(Grafo *g, int v1, int v2) {

if (v1 > v2)

g->mat[v1][v2] = 0;

else

g->mat[v2][v1] = 0;

}

/* Deve imprimir grafos no seguinte formato:

Grafo dirigido

0 ----- 1 ---- 2

| |

| |

4 ----- 3 ---- 5

E = {(0,1),(1,0),(1,2),(2,1),(3,1),(3,4)

(3,5),(4,0),(4,3),(5,3)}

*/

void imprime_grafo(Grafo *g) {

}

int main() {

Grafo g;

cria_grafo(&g, 6);

adiciona_aresta(&g,0,1);

adiciona_aresta(&g,1,2);

adiciona_aresta(&g,3,1);

...

Baixar como (para membros premium)  txt (1.4 Kb)   pdf (39.6 Kb)   docx (11.3 Kb)  
Continuar por mais 1 página »
Disponível apenas no TrabalhosGratuitos.com