Explicar estructuras secuenciales y en cadena con historias.

estudia mucho, mejora cada dia

Este artículo ha sido incluido en mi repositorio de Github DayDayUP : github.com/RobodLee/DayDayUP , bienvenido Star

⭐⭐⭐⭐⭐ 转载请注明出处:blog.csdn.net/weixin_4346…

prefacio

Tenemos una clase este semestre, que se trata de enseñar tecnología de la información, es decir, cada estudiante asigna un capítulo sobre estructuras de datos y luego sube al escenario para hablar sobre eso. Me asignaron el contenido de estructura secuencial y estructura en cadena, para hacerlo interesante, inventé una historia corta e hice algunas animaciones. Se siente bastante bien. La animación se ha hecho durante mucho tiempo. Para no desperdiciar las historias y animaciones que trabajé tanto para hacer, compartiré este artículo en el artículo de agua.

memoria del ordenador

Ya sea una estructura secuencial o una estructura en cadena, es una descripción de cómo se almacenan los datos en la memoria. Por lo tanto, para comprender estas dos estructuras de datos, primero es necesario introducir la memoria de la computadora.

En la imagen de arriba, cada fila de la imagen es una 存储单元, compuesta por varias unidades de almacenamiento 存储体. Cada unidad de almacenamiento está conectada con una 字选线, correspondiente 内存地址.

Por ejemplo, ahora se leen los datos de la unidad de memoria cuya dirección de memoria es 0: primero, la CPU envía la información de la dirección al MAR a través del bus de direcciones , y el MAR luego envía la dirección al decodificador.El decodificador puede seleccionar el Línea de selección de palabra correspondiente a través de la dirección, y luego da una señal para la unidad de almacenamiento correspondiente. Finalmente , los datos binarios en la unidad de almacenamiento se pueden enviar al MDR a través de la línea de datos (línea verde) . De esta manera, se completa la operación de lectura de datos, si es una operación de escritura, solo es necesario controlar si leer o escribir a través de la línea de control de lectura/escritura, si es una operación de escritura, se envían los datos en el MDR a la unidad de almacenamiento correspondiente a través de la línea de datos.

Estos son algunos conocimientos de los principios de la composición de la computadora. Aquellos que no lo han aprendido pueden no entenderlo bien. No importa. Solo conozca un concepto aquí, es decir, la memoria de la computadora se compone de varias unidades de almacenamiento, y cada unidad de almacenamiento tiene un número único (dirección de memoria) que la computadora puede leer/escribir en la unidad de almacenamiento en la dirección de memoria especificada .

Esto es como, la memoria de la computadora puede considerarse como un hotel , cada habitación es una unidad de almacenamiento, el número de habitación corresponde a la dirección de la memoria y el inquilino de la habitación son los datos almacenados en la memoria.

estructura secuencial

Antes de presentar la estructura secuencial, déjame contarte una pequeña historia:

Un día, mi abuelo vino a la ciudad a hacer un recorrido con siete calabazas.

Como estamos aquí por turismo, no podemos dormir en la calle, así que el abuelo y las calabazas van a buscar un hotel para quedarse primero. Encontraron un hotel con más habitaciones vacías. El abuelo abrió siete habitaciones conectadas a la vez, y luego dejó que los siete bebés calabaza vivieran uno por uno.

En la imagen se puede ver que las siete habitaciones están una al lado de la otra, por lo que los siete bebés calabaza también viven en sus propias habitaciones uno por uno. Algo así es una estructura secuencial.

Estructura secuencial, lo que significa que cada elemento de datos se almacena en secuencia en un grupo de unidades de almacenamiento con direcciones consecutivas en la computadora . Con este método de almacenamiento, dos elementos que son lógicamente adyacentes entre sí también son adyacentes en la memoria de la computadora .

La estructura de la secuencia corresponde a la matriz, entonces, cómo representar el ejemplo anterior en el código:

En el código, se abre una matriz de tamaño 7 a través de la nueva palabra clave, lo que equivale a que el abuelo abra siete habitaciones y luego almacene siete datos en la matriz, lo que equivale a siete calabazas bebés que viven en sus respectivas habitaciones por turno. .

estructura de la cadena

Después de presentar la estructura de la secuencia, introduzcamos la estructura de la cadena. O continuar con la historia anterior.

Después de permanecer en este hotel por un período de tiempo, los niños calabaza se sintieron un poco incómodos y querían cambiar. Pero el abuelo pensó: ¿Por qué debo cambiar si vivo tan bien aquí? Pero no puedo vencer a estos pequeños, así que solo puedo confiar en ellos. Después de todo, dos puños no pueden vencer a catorce manos, aunque mi abuelo es relativamente fuerte…

然后他们就收拾东西来到了一家新的宾馆。

由于这家宾馆生意比较好,住的人有点多,没有连在一起的七个房间了,爷爷索性就让他们随便住了,挑自己喜欢的房间住。

等住完了之后爷爷心里想:这几个小娃娃怎么住的这么分散,要是弄丢了可怎么搞,不得心疼死我呀。

于是乎,爷爷就找到了前台小姐姐,找她要了七张小纸条。

然后爷爷将七张小纸条分给了葫芦娃们,然后他们每个人都在小纸条上记着下一个葫芦娃的房间号。这样虽然几个葫芦娃都不住在一起,但是通过纸条上的房间号就可以依次找到下一个葫芦娃的房间。这样从大娃开始,就可以找到所有的葫芦娃了。

链式结构的特点是存储各个数据元素的计算机存储单元的地址不一定是连续的,但是在逻辑上相邻的。每个结点都包含数据域指针域两部分。

故事中所表示的就是链式结构。我们再来思考一个问题,现在通过纸条可以找到下一个葫芦娃的房间,但是怎么找到上一个呢?好像不可以,稍微做一下修改,比如现在每个葫芦娃手上有两张纸条,另一张纸条上记录的是上一个葫芦娃的房间号。

其实这个就是双链表,每个结点都有两个指针,分别指向上一个结点与下一个结点。

所以说,数据结构研究的就是数据如何在内存中存储。尽管数据结构有多种,但是数据都是在内存中存放的,只不过约束条件不同,概念就有所区别。不管是栈、队列等简单一点的数据结构,还是树、图等复杂一点的数据结构,他们的实现方式无非就三种:顺序存储、链式存储、顺序存储+链式存储。

拓展

最后,我们再来拓展一个知识点,就是如何用顺序结构和链式结构来实现栈。

栈是一种只能从栈顶存放数据和取出数据的数据结构。不能从栈底对元素进行操作。

如果采用顺序结构实现,可以准备一个数组,规定数组起始位置为栈底,靠近末尾一侧为栈顶。那么添加和取出元素就只能从末尾一侧进行操作了。

typedef struct {
    ElemType data[MaxSize];     //用于存放数据
    int top;                    //指向栈顶
} SqStack;
复制代码

Si se sustituye por una estructura de cadena. Luego especifique que el encabezado es la parte inferior de la pila y la cola es la parte superior de la pila. Entonces solo puede agregar o eliminar elementos del final de la tabla. Si se especifica a la inversa que el encabezado es la parte superior de la pila y la cola de la tabla es la parte inferior de la pila, de todos modos, solo se puede operar desde un extremo, lo que se ajusta a la definición de la pila.

typedef struct StackNode {
    ElemType data;
    struct StackNode *next;
} *LinkStack;
复制代码

Resumir

Estudiar la estructura de datos es estudiar cómo se almacenan los datos en la memoria. Al aprender una nueva estructura de datos, es fácil comprender primero su definición y luego pensar en su implementación y cómo almacenarla en la memoria.

Escribir no es fácil, recuerda que te gusta después de leerlo~~~~

⭐⭐⭐⭐⭐ 转载请注明出处:blog.csdn.net/weixin_4346…

Este artículo ha sido incluido en mi repositorio de Github DayDayUP : github.com/RobodLee/DayDayUP , bienvenido Star

Si crees que el artículo no es malo 点赞, por favor dame uno收藏关注

Para conocer más conocimientos de programación, presta atención a la cuenta oficial 『 R o b o d 』:

Supongo que te gusta

Origin juejin.im/post/7082758443886444580
Recomendado
Clasificación