Lista de adyacencia de entrada simple

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.
Inserte la descripción de la imagen aquí

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
Inserte la descripción de la imagen aquí
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
Inserte la descripción de la imagen aquí
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
Inserte la descripción de la imagen aquí
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
Inserte la descripción de la imagen aquí

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.

Supongo que te gusta

Origin blog.csdn.net/qq_34902437/article/details/101613170
Recomendado
Clasificación