Capítulo 12: Uso de estructuras y punteros
GitHub
Enlace: 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
Respuestas a algunos ejercicios extracurriculares
12.7 Problema
-
por supuesto que puede. Para que
current
el 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. -
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 ¿root
el nodo no esdummy
el nodo? Realmente no está claro cuál es el uso de enredar la diferencia entre los dos. Aunque el registro cambia en ellink
pensamiento puntero es realmente importante. Ver respuesta de referencia: -
No cambie, frente al mismo valor. Cambiado, al final.
-
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:
-
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! -
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.
-
Tú Este es el
trie
árbol que tienes, ah. Plantilla resumida: [Árbol de diccionario + plantilla] Plantilla de árbol Trie . Respuesta de referencia:
12.8 Ejercicios de programación
-
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
. -
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.
-
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
. -
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!
-
No quiero escribir más.
-
Lo mismo que arriba. Respuesta de referencia: Preste atención a la cadena indirecta:
this->bwd->fwd
ythis->fwd->bwd
: en este programaif
Estas dos expresiones se han utilizado más de una vez, creando variables temporales que pueden salvar mejor el valor. Verdemo03.c
. -
¿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. Verdemo04.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 Node
nodo, 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
-
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
link
puntero 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. -
Debe prestar atención al orden al cambiar el puntero de una lista de doble enlace .
-
P249-P252
Todo 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-else
etc., el programa está escrito por el programa, pero mirando todo ah extenuante ...