[C y puntero] ch12. Uso de estructura y puntero

Capítulo 12: Uso de estructuras y punteros

GitHubEnlace: ch12. Usar estructura y puntero

¡Las estructuras y los punteros han creado innumerables estructuras de datos excelentes!

Resumen de este capítulo y puntos a tener en cuenta

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Respuestas a algunos ejercicios extracurriculares

12.7 Problema

  1. por supuesto que puede. Para que currentel lugar sea reemplazado *list, en la línea. Aunque se utiliza una variable menos, aumenta la dificultad de pensar, no es fácil de entender y no tiene gran utilidad.

  2. Creo que es muy fácil de usar, dummy->next = head;así que no sé cuánto código y pensamiento se simplifican. Sin embargo, el libro ofrece una solución óptima, pero ¿ rootel nodo no es dummyel nodo? Realmente no está claro cuál es el uso de enredar la diferencia entre los dos. Aunque el registro cambia en el linkpensamiento puntero es realmente importante. Ver respuesta de referencia:

    [Error en la transferencia de la imagen del enlace externo. El sitio de origen puede tener un mecanismo de enlace anti-sanguijuela. Se recomienda guardar la imagen y subirla directamente (img-YbZ9wiP8-1609169042692) (https://raw.githubusercontent.com/Y- puyu / picture / main / images /20201227162639.png)]

  3. No cambie, frente al mismo valor. Cambiado, al final.

  4. Pensé que era necesario asignar un valor no válido ... todavía es demasiado joven ... inicialización parcial, diseño separado, declaración incompleta de etiquetas de estructura ... tql! ! ! Ver respuesta de referencia:

    [Error en la transferencia de la imagen del enlace externo. El sitio de origen puede tener un mecanismo de enlace anti-sanguijuela. Se recomienda guardar la imagen y subirla directamente (img-MqgS2mqW-1609169042695) (https://raw.githubusercontent.com/Y- puyu / picture / main / images /20201227163032.png)]

  5. Esta es una aplicación directa para un espacio, y no free(). ¡Cada vez que haya un valor duplicado, se filtrará un espacio en la memoria!

  6. Por supuesto, O (n 2) O (n ^ 2)O ( n2 )Vuelva a escanearlo para encontrar un valor máximo y mínimo e inserte una nueva lista enlazada ordenada.

  7. Tú Este es el trieárbol que tienes, ah. Plantilla resumida: [Árbol de diccionario + plantilla] Plantilla de árbol Trie . Respuesta de referencia:

    [Error en la transferencia de la imagen del enlace externo. El sitio de origen puede tener un mecanismo de enlace anti-sanguijuela. Se recomienda guardar la imagen y subirla directamente (img-Go67M3ut-1609169042697) (https://raw.githubusercontent.com/Y- puyu / picture / main / images /20201227164028.png)]

12.8 Ejercicios de programación

  1. Estructura de lista enlazada. Se puede registrar el número de nodos desde cualquier punto hasta el final de la lista vinculada. Ver demo01.c.

  2. No es necesario escribir esta pregunta. La lista enlazada desordenada ha sido escaneada. Si la posición de escaneo de la lista enlazada ordenada es mayor que el número actual, no hay necesidad de escanear las siguientes, simplemente regrese.

  3. Respuesta de referencia: Esto hace que la función sea más complicada, principalmente porque el puntero raíz ya no es el mismo que el puntero del nodo. Ver demo03.c.

  4. El problema clásico. Referencia: [Lista enlazada E] lc206. Lista enlazada inversa (Lista enlazada inversa + Pregunta de plantilla) . La publicación de mi blog es muy meticulosa y los tres métodos se explican uno por uno. ¡Se recomienda aprender!

  5. No quiero escribir más.

    [Error en la transferencia de la imagen del enlace externo. El sitio de origen puede tener un mecanismo de enlace anti-sanguijuela. Se recomienda guardar la imagen y subirla directamente (img-Lq6SSbOC-1609169042698) (https://raw.githubusercontent.com/Y- puyu / picture / main / images /20201227165405.png)]

    [Error en la transferencia de la imagen del enlace externo. El sitio de origen puede tener un mecanismo de enlace anti-sanguijuela. Se recomienda guardar la imagen y subirla directamente (img-LC723hc2-1609169042699) (https://raw.githubusercontent.com/Y- puyu / picture / main / images /20201227165533.png)]

  6. Lo mismo que arriba. Respuesta de referencia: Preste atención a la cadena indirecta: this->bwd->fwdy this->fwd->bwd: en este programa ifEstas dos expresiones se han utilizado más de una vez, creando variables temporales que pueden salvar mejor el valor. Ver demo03.c.

  7. ¿Cómo se dice la asignación de memoria dinámica? Utiliza muy poca. Por lo general, utilice la simulación de matriz directamente. [Árbol de diccionario + plantilla] Plantilla de árbol de Trie .

    Respuesta de referencia:
    Los nodos en las dos listas son estructuralmente diferentes. Este hecho excluye la posibilidad de usar una única función de inserción para la lista; esto es desafortunado, porque cada caso requiere la misma declaración lógica si cualquier otro archivo fuente lo necesita Las soluciones a continuación , entonces deberían estar en el archivo de inclusión. Ver demo04.c.

Ensayo

No hay mucho que decir, hay muchas situaciones de límites en la lista vinculada. Ahora, tome la escritura deformada de la estructura de fuerza o una matriz de una sola lista analógica, pero cada vez la estructura malloc()consume mucho tiempo. Un momento para solicitar un Nodenodo, aparentemente escuchando a los chicos que dicen, apliquen un gran espacio y apliquen un pequeño espacio usado por el tiempo del sistema operativo o menos, es decir, apliquen cuanto más el número, más tiempo se gasta.

Las listas enlazadas también son básicas y las listas de doble enlace se utilizan menos. Las listas de adyacencia de seguimiento se utilizan a menudo en los temas de teoría de grafos.

Este capítulo puede entenderse como la aplicación de la gramática, especialmente el uso combinado de estructura y puntero para crear una estructura de datos muy poderosa.Estos ya se han tocado antes, por lo que rara vez escribo a mano, y no se recomienda que los principiantes escriban aquí. Simplemente puede escribirlo y luego buscar directamente un ejercicio especial en este libro para la estructura de datos y escribir mucho código.

duda

  1. El método para lidiar con el cambio del nodo de la cabeza cuando se inserta la cabeza del reloj de enlace simple es muy hermoso y detallado. Solo necesita guardar para cambiar el linkpuntero en la línea. Por lo general, en las preguntas algorítmicas, especialmente el force buckle, cuando encuentre una lista enlazada cuyo nodo principal cambiará, solicitará un nodo principal virtual para ayudarlo a lidiar con él, simplificando muchos juicios de límites.

  2. Debe prestar atención al orden al cambiar el puntero de una lista de doble enlace .

  3. P249-P252Todo está haciendo: ¡espectáculo del caos! . Usando una serie de métodos de optimización de código, simplemente extraiga el público no tiene nada que hacer, elementos de integración, if-elseetc., el programa está escrito por el programa, pero mirando todo ah extenuante ...

Supongo que te gusta

Origin blog.csdn.net/yl_puyu/article/details/111877292
Recomendado
Clasificación