Ψάξιμο κατά βάθος
Για να επισκευθούμε όλους τους κόμβους ενός γράφου με ν κόμβους χρειαζόμαστε 
έναν πίνακα λογικών μεταβλητών μιας διάστασης και μήκους ν ο οποίος περιέχει 
την τιμή "αληθές" για τους κόμβους τους οποίους έχουμε επισκευθεί.
Η συστηματική επίσκεψη όλων των κόμβων γίνεται σύμφωνα με τα παρακάτω
βήματα:
-  Φυλάμε την τιμή "ψευδές" στον πίνακα επισκέψεων.
 -  Επισκεπτόμαστε όλους τους κόμβους που δεν έχουμε επισκευτεί.
 
Η επίσκεψη ενός κόμβου γίνεται σύμφωνα με τα παρακάτω βήματα:
-  Σημειώνουμε στον πίνακα ότι έχουμε επισκευθεί τον κόμβο.
 -  Επισκεπτόμαστε όλους τους συνδεδεμένους κόμβους που δεν έχουμε επισκευθεί.
 
Το παρακάτω παράδειγμα περιέχει υλοποίηση για λίστα γειτνίασης:
#include <stdlib.h>
#include <stdio.h>
/*
 * Adjacency list for a graph of 10 nodes
 */
struct s_adjlist {
	int node;
	struct s_adjlist *next;
};
static struct s_adjlist *adj[10];
static int visited[10];
/*
 * Visit the nodes starting from node printing their value using
 * depth first search 
 */
static void
visit(int node)
{
	struct s_adjlist *p;
	visited[node] = 1;
	printf("%d\n", node);
	for (p = adj[node]; p != NULL; p = p->next)
		if (!visited[p->node])
			visit(p->node);
}
main()
{
	int a, b;
	struct s_adjlist *p;
	int i;
	/* Read edges and connect them */
	while (scanf("%d %d", &a, &b) == 2) {
		p = (struct s_adjlist *)malloc(sizeof(struct s_adjlist));
		p->node = b;
		p->next = adj[a];
		adj[a] = p;
		p = (struct s_adjlist *)malloc(sizeof(struct s_adjlist));
		p->node = a;
		p->next = adj[b];
		adj[b] = p;
	}
	/* Depth first search/print of the graph */
	for (i = 0; i < 10; i++)
		visited[i] = 0;
	for (i = 0; i < 10; i++)
		if (!visited[i])
			visit(i);
}
Αν το πρόγραμμα διαβάσει το γράφο:
2 3
3 8
8 6
4 9
θα τυπώσει την παρακάτω σειρά επίσκεψης:
0
1
2
3
8
6
4
9
5
7