A los principiantes en aprender la lista de adyacencia les resultará difícil recordar la lista de adyacencia, especialmente su parte de la estructura de datos, vamos a presentar brevemente la lista de adyacencia.
1. Comprensión general
Primero, se dan un gráfico dirigido y su lista de adyacencia.
Dar una representación de su estructura de datos
// 边表的结构
typedef struct ArcNode
{
// 存储该顶点对应的下标
int adjvex;
// 指向的下一跳指针
struct ArcNode *nextarc;
}ArcNode;
// 顶点表
typedef struct
{
// 顶点信息
int data;
// 指向的第一条边的指针
ArcNode *firstArc;
}VNode;
// 顶点表和边表组成邻接表
typedef struct
{
// 邻接表
VNode adjlist[maxSize];
// 顶点数和边数
int n,e;
}AGraph;
2. Eche un vistazo al desglose
Puede verse que la estructura de datos es relativamente compleja, no es fácil de recordar y no es fácil de entender para los principiantes. Analicemos la estructura
en detalle a continuación : La figura de arriba es una ilustración de una lista de adyacencia.
La elipse roja es la tabla de vértices en la estructura de datos , que representa el vértice vi en un gráfico dirigido o un gráfico no dirigido
La parte del rectángulo rojo es la tabla de bordes, que representa la relación entre los bordes que existen entre los dos vértices, es decir, los dos puntos están conectados entre sí por un borde. Por ejemplo, v0 apunta a 3 ( 3 significa el elemento con el subíndice 3 en la tabla de vértices, la tabla de vértices es una matriz, que se discutirá más adelante ) y 3 en la tabla de vértices representa v3 ( preste atención al subíndice de matriz en el izquierda, donde la matriz se coloca verticalmente Of )
Finalmente, el borde azul más externo formado por estas dos tablas se llama tabla de adyacencia .
En este momento, puede revisar el código de la estructura de datos que se proporciona a continuación y volver a comprender lo siguiente.
3. Un poco más
Echemos un vistazo al significado de cada pequeña estructura de datos.
Estructura de
la tabla de aristas En la estructura de la tabla de aristas, adjvex representa el subíndice del vértice (dijimos que la tabla de vértices se implementa mediante una matriz, que se discutirá más adelante)
Y * nextarc es un puntero al siguiente vértice, que es la flecha negra en la figura
El resultado final de la tabla de bordes generalmente se llama ArcNode, Arc es el arco, el significado del borde (por supuesto, el nombre es arbitrario)
Los
datos de la estructura de la tabla de vértices representan los vértices de un gráfico dirigido o un gráfico no dirigido.
* firstArc representa el primer borde al que apunta el vértice en la estructura de datos
Finalmente, v en VNode es la abreviatura de vértice.
Estructura de la lista de adyacencia
Finalmente, adjlist (adj es adyacente, es decir, adyacente, adyacente) vemos que es una matriz, esta es la matriz de vértices, encontramos la matriz de vértices a través de la lista de adyacencia (AGraph), y podemos acceder a cualquier vértice a través de * firstArc de la matriz de vértices (es decir, recorre todo el gráfico).
Lo anterior es una simple introducción a la estructura de datos de la lista de adyacencia.