Hello and welcome to our community! Is this your first visit?
Enjoy an ad free experience by logging in. Not a member yet? Register.

# Thread: depth-first search of a graph

1. ## depth-first search of a graph

Hi!!! I need some help...
The exercise is:
You have to implement a data structure to represent graphs,directed or undirected,that tries to avoid the wasted space in the representation of a graph with adjacency matrix and the difficulty of searching the edges with adjacency list representation.
We consider that the vertices are numbered from 1 to nverts and the exit degree of each vertex is at most MAXDEG. If deg[i] is the exit degree of the vertex i then the neighbors of the vertex i can be saved at the matrix edge[i][j], 1<=j<=deg[i].
Write a program that reads the datas from a file: if the graph is directed or undirected(1 or 0), the number of vertices (nverts),the number of edges (nedges) and the first and the last vertex of each edge.
Write the function dfs that, with argument the data structure that you implemented before for the representation of a graph, prints the edges by the depth-first search of a graph.

What I've done so far is: I wrote a program that reads these information from a file, calculates the exit degree of each vertex and creates the matrix edge[i][j].

What data structure do I have to implement???

2. It depends.
You can do it with an array, if you want to make simple things. Each node has an array, called for example SUCCESSORS, that has MAXDEG elements. As you can imagine it's easy but it's a huge waste of space. If your root node has 10k elements, and his sons are leaves, you'll have an array of 10k elements for each node, even if the one of leaves will be always empty.

I'd do it with lists, to gain a dynamical allocation of space for a function that is generic and can be applied successfully to each graph structure.

3. Ok...Thank you very much!!!

#### Posting Permissions

• You may not post new threads
• You may not post replies
• You may not post attachments
• You may not edit your posts
•