blob: a0087ce475a041c18e16d62abe36266d10bb2797 (
plain)
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
|
#ifndef GRAPH_H
#define GRAPH_H
#include "LinkedList.h"
typedef struct Vertex Vertex;
typedef struct Graph Graph;
struct Vertex {
int id; // a number in [0; numVertices[
LinkedList *outNeighbours; // A linked list of vertices.
LinkedList *inNeighbours; // A linked list of vertices
};
struct Graph {
int numVertices;
int numEdges;
Vertex *vertices; // An array of numVertices vertices
};
// Allocates and constructs a new graph with n vertices.
// Returns a pointer to the new graph, or NULL on error.
// Post: the caller owns the graph.
Graph *Graph_new(int n);
// Adds an edge from the i'th to the j'th vertex (0-indexed).
void Graph_addEdge(Graph *g, int i, int j);
// Reads a graph from the given file and returns a newly
// constructed Graph representing it.
// Returns a pointer to the read graph, or NULL on error.
// Post: the caller owns the graph.
Graph *Graph_read(const char *filename);
// Deallocates the given graph and all its associated memory.
void Graph_delete(Graph *g);
// Prints some useful information about the given graph.
void Graph_print(Graph *g);
#endif // GRAPH_H
|