Teoría de grafos: comprensión de los conceptos básicos de las listas entrecruzadas

<Escribir un blog es aprender y comprender más profundamente>

        Estaba un poco confundido cuando estaba aprendiendo la lista cruzada de la clase de tortuga de caparazón blando. Después de buscar en la estación C, descubrí que no había ninguna descripción o explicación que fuera más familiar para Xiaobai. Escribí este blog con la actitud de dejarme entender más profundamente y compartirlo con todos. Por favor, señale cualquier error.

La introducción de la lista cruzada:

        El uso de la lista de adyacencia es simple y conveniente, pero en el procesamiento del gráfico dirigido, la lista de adyacencia única solo puede representar el grado de salida (como se muestra en la Figura 1)

Pero en un caso específico, si se necesita el grado de entrada del punto de interés, se debe establecer una lista de adyacencia inversa.

818259a9cddb48febe4b002a1fb1f3ec.jpeg                                        436f9b0132f9420b9e66492047bec836.jpeg

 (Figura 1) La lista de adyacencia de A, que indica la lista de bordes salientes (Figura 2) La lista de bordes entrantes y la lista de bordes salientes de A

Por lo tanto, es recomendable combinar la lista de adyacencia y la lista de adyacencia inversa para crear una lista cruzada, que puede representar tanto el grado de entrada como el de salida. (Imagen 2, ¿es una cruz?)

El método de construcción de la lista de enlaces cruzados:

① Redefinir la estructura del encabezado

        Solo es necesario modificar ligeramente la estructura del encabezado y agregar dos campos de puntero firstIn y firstOut, apuntando respectivamente a la dirección del primer vértice con A como el final del arco y A como la cabeza del arco. De esta forma, el grado de entrada y el de salida se pueden obtener mediante la búsqueda iterativa de los campos de puntero de entrada y salida. (Puede comparar y observar la estructura de la cabeza en la Figura 1 y la Figura 2 para ayudarlo a comprender)

datos primero en primero en salir

 

datos: datos de vértice firstIn: puntero a la primera tabla de borde firstOut: puntero a la primera tabla de borde

② Redefine la estructura de nodos de la tabla perimetral       

(La lista de adyacencia elimina la estructura de lista enlazada del nodo principal y cada nodo representa un borde, por lo que se denomina lista de bordes)

        La estructura de cada nodo en la tabla perimetral es la siguiente:

        tailvex: el subíndice del punto inicial del arco            headvex: el subíndice del punto final del arco headlink: el puntero al borde taillink: el puntero al borde

colaVex cabezavex Enlace principal Enlace de cola

Cada nodo contiene una información de borde completa tailvex->headvex; el enlace de cabecera de dirección del siguiente borde de entrada; el enlace de cola de dirección del siguiente borde de salida.

Se puede formar una lista de enlaces cruzados llenando los cuatro campos.

                        Un poco abstracto, da un ejemplo concreto para ayudar a entender:

        1. Como se muestra en la esquina inferior izquierda de la figura, establezca la estructura de vértice de acuerdo con el paso ①

        2. Establezca la estructura del nodo como se muestra en ②, que es el mismo que el método de establecimiento de la lista de adyacencia Apunte el campo de puntero firstOut al primer borde de salida y luego complete el campo de puntero tailLink a su vez para completar el borde de salida mesa.

751fd6eebaa943119e59295e76571d24.png(Una especie de payaso T_T)

        3. De la misma manera que se establece la lista de adyacencia inversa, apunte el campo de puntero firstIn a la primera dirección de borde entrante y luego complete el campo de puntero headLink a su vez para completar la tabla de borde entrante.

 6154ee5ee0b646d4b62f4372ce132e69.png(Tome V0 como ejemplo)

        4. Al final, se formó el desordenado diagrama de lista cruzada en otras publicaciones.

fdb14eab87c9442e81673eb33aa19527.png(La imagen está tomada de "Estructura de datos y algoritmo" por bilibili fish C-Little Turtle)

De esta manera, se establece la lista de enlaces cruzados. Usando una tabla, se puede obtener el grado de entrada y salida de cada vértice en el gráfico.

 

 

 

 

 

 

Supongo que te gusta

Origin blog.csdn.net/m0_67441224/article/details/126539668
Recomendado
Clasificación