Utiliza um arquivo header adaptado da implementação de listas encadeadas.
llist** graph
Referida, por meio de struct degree
Referida, por meio de
typedef
, como graph
, armazena a estrutura básica de um grafo, isto é, um vetor de listas encadeadas, cujos elementos representam as arestas.
typedef
, como degree
, armazena a estrutura de três valores inteiros: indegree
(grau de entrada), outdegree
(grau de saída), e total
(a soma do grau de entrada com o de saída). É relacionado a um vértice, por meio da função vertexDegree
.
createGraph
(int size)
Retorna um novo grafo de tamanho insertEdge
(graph aGraph, int origin, int destination, int weight)
Cria uma aresta partindo de um vértice de origem em direção a um outro, de origem, com um custo (peso) atribuído.
removeEdge
(graph aGraph, int origin, int destination, int weight)
Remove uma aresta, dadas as informações sobre o vértice de origem, o de destino e o custo (peso) relacionado a essa aresta.
printGraph
(graph aGraph)
Imprime um grafo.
isCompleteGraph
(graph aGraph)
Retorna 0, caso o grafo não seja completo, e 1, caso contrário. É importante destacar que a definição de completo se aplica a grafos simples (sem laços (self-loops) e duplas direções (mais uma aresta ligando dois vértices)) e não direcionados. Como a implementação do grafo, para este repositório, supõe direções, um grafo não direcionado é considerado aquele cujas arestas são direcionadas bilateralmente, isto é, há ida e volta entre dois vértices, para quaisquer vértices que possuam alguma conexão.
vertexDegree
(graph aGraph, int vertex)
Retorna uma struct printAllPaths
(graph aGraph, int origin, int destination)
Imprime todos os caminhos entre dois vértices. Retorna um inteiro 0 ou 1, representando a existência ou não de caminhos entre os vértices especificados.
printLowestWeightPath
(graph aGraph, int origin, int destination)
Imprime o caminho de menor peso (custo) total entre dois vértices. Também imprime o valor total do custo desse caminho. Retorna um inteiro 0 ou 1, representando a existência ou não de caminhos entre os vértices especificados.
printShortestPath
(graph aGraph, int origin, int destination)
Imprime o caminho mais curto entre dois vértices. Também imprime o número total de vértices contidos nesse caminho. Retorna um inteiro 0 ou 1, representando a existência ou não de caminhos entre os vértices especificados.
size
. Um grafo pode ser criado com graph nome = createGraph(tamanho);
degree
contendo informações sobre o grau de um vértice de um grafo. Ela inclui o grau de entrada (indegree
), o de saída (outdegree
), e o grau do vértice em si (total
).