Dijkstra em c

642 palavras 3 páginas
#include <stdio.h>
#include <stdlib.h>
#define MAX 10
#define MEMBRO 1
#define NAOMEMBRO 0
#define INFINITO 100000
// GRAFO ======================================================================= enum tipo_status {espera, pronto, processado};

typedef int tipo_chave;

typedef int tipo_peso;

typedef struct
{
tipo_chave chave; // DEMAIS CAMPOS enum tipo_status status;
}
tipo_elemento;

typedef struct
{
int conectado; tipo_peso peso; enum tipo_status status;
}
tipo_aresta;

struct tipo_grafo
{
tipo_elemento vertices[MAX]; tipo_aresta arestas[MAX][MAX]; int num_vertices;
};

typedef struct tipo_grafo *grafo;

//////////////////// Grafo ///////////////////////////////////////////////////// int cria(grafo *g)
{
int i, j; if(!(*g = (grafo)malloc(sizeof(struct tipo_grafo)))) return 0; (*g)->num_vertices = 0; for(i = 0; i < MAX; i++) for(j = 0; j < MAX; j++) { (*g)->arestas[i][j].conectado = 0; (*g)->arestas[i][j].peso = 0; (*g)->arestas[i][j].status = pronto; } return 1;
}

int termina(grafo *g)
{
free(*g); return 1;
}

int busca_vertice(grafo g,tipo_chave ch)
{
int i; for(i = 0; i < MAX && i < g->num_vertices; i++) if(g->vertices[i].chave == ch) return i; return -1;
}

int insere_vertice(grafo g,tipo_elemento e)
{
if(g->num_vertices<MAX) { if(busca_vertice(g,e.chave) == -1) { g->vertices[g->num_vertices] = e; g->num_vertices++; return 1; } } return 0;
}

int insere_aresta(grafo g,tipo_chave ch1,tipo_chave ch2,tipo_peso peso)
{
g->arestas[ch1][ch2].conectado = 1; g->arestas[ch1][ch2].peso = peso; g->arestas[ch1][ch2].status = espera; g->arestas[ch2][ch1].conectado = 1; g->arestas[ch2][ch1].peso = peso; g->arestas[ch2][ch1].status = espera; return 1;
}

int remove_aresta(grafo g,tipo_chave ch1,tipo_chave ch2)
{
int i; for(i = 0; i

Relacionados

  • Dijkstra em c
    642 palavras | 3 páginas
  • Algoritmo de dijkstra para empresa de delivery
    1254 palavras | 6 páginas
  • Algoritmo de Dijkstra
    1256 palavras | 6 páginas
  • BuscaGulosaGrafos
    2614 palavras | 11 páginas
  • Trabalho sobre Heaps binários
    1131 palavras | 5 páginas
  • Algoritmo de dijkstra
    2145 palavras | 9 páginas
  • Algoritmos em grafos
    2963 palavras | 12 páginas
  • Implementação do algoritmo de dijkstra
    388 palavras | 2 páginas
  • oilllll
    2344 palavras | 10 páginas
  • Simulação de algoritmos de roteamento
    14893 palavras | 60 páginas