struct list_of_vertexes;
/* Вершина графа: данные + список соседей */
struct vertex {
/* список вершин, соседних с данной */
struct list_of_vertexes * list_of_neighbors;
/* данные, связанные с вершиной */
};
/* Список вершин.
* Поле next указывает на следующую вершину в списке.
* Последняя вершина в списке в указателе next содержит NULL. */
struct list_of_vertexes {
struct list_of_vertexes * next;
struct vertex * vertex;
};
/* Граф задаётся списком своих вершин.
*/
struct graph {
struct list_of_vertexes * vertexes;
};
В предложенном примере окрестность узла графа задаётся в самом узле. У такого решения есть как плюсы, так и минусы.