Рассмотрим наиболее распространенные формы представления графов.
1. Последовательность ребер (дуг), перед которой указывается количество вершин графа. Каждое ребро (дуга) задается парой смежных вершин. Такая форма удобна для внешнего представления графа при его вводе.
Пример для рис. 8.1.в:
5 - число вершин
0 1
1 2
2 3
2 4
3 4
4 0
4 2
Если в таком виде хранить граф в памяти, нужно описать два параллельных массива для хранения смежных вершин.
#define NMAX 10 /* макс. число вершин */
#define RMAX 55 /* макс. число ребер */
/* RMAX = NMAX * (NMAX - 1) / 2 + NMAX; */
int v1 [RMAX]; /* массивы смежных */
int v2 [RMAX]; /* вершин */
int n; /* число вершин графа */
int r; /* число ребер графа */
2. Матрица смежности – это квадратная матрица размерности n*n (n – число вершин), в которой элемент
1, ли есть дуга i –> j ,
ms[i][j] =
0 в противном случае.
Пример матрицы смежности для графа, представленного на рис. 13.1.а:
| 0 1 2 3 4 5
----------------------------
0 | 0 1 0 0 0 1 Для неориентированного графа матрица
Пример 8.2. Ввод с клавиатуры неориентированного графа в виде последовательности ребер и формирование матрицы смежности. Конец ввода ребер отмечается нажатием клавиш Ctrl – Z (конец файла).