Estructuras de datos clásicas para que los programadores integrados aprendan

1. ¿Qué es una estructura de datos?

Si queremos organizar los libros ahora y hay una pila de libros, ¿cómo deberíamos organizarlos? La más simple es ponerlos uno por uno; o clasificar los libros, y luego subdividirlos e integrarlos según las categorías principales; o subdividirlos directamente en muchas categorías, y debe haber muchas relaciones entre cada categoría; pero ¿has ¿Has pensado alguna vez en esto?¿Dónde se colocarán los libros? ¿En qué ambiente se debe almacenar? Esto requiere una perspectiva diferente para cada método de clasificación, ya sea que estén todos colocados en el primer piso de una estantería, o colocados en diferentes estantes, o colocados en diferentes estanterías de la biblioteca; la clasificación mencionada Lo que el libro analiza es qué estructuras de datos estudiar. Volviendo a nuestros programadores, necesitamos registrar los métodos de clasificación y las formas de almacenamiento estudiadas anteriormente a través de la computadora, porque después de todo, nuestro propósito de clasificar los libros es administrarlos y usarlos convenientemente. Entonces, en el análisis final, necesitamos reflejar estos datos abstractos y la relación entre los datos para el cálculo e implementarlos en un lenguaje de programación. Entonces podemos saber: ¡ la estructura de datos estudia la relación entre los datos !

2. ¿Por qué estudiar la estructura de datos?

Estudie el mecanismo de gestión entre los datos en detalle, forme un modelo de estructura de datos y utilícelo como referencia cuando se encuentre con situaciones reales, para que podamos aplicarlo a la programación más rápido, diseñar y escribir un mejor software, ¡y esencialmente mejorar la calidad del proyecto!

3. ¿Qué es la estructura de datos?

Todo el mundo debería conocer una idea clásica: programa = estructura de datos + algoritmo;

Luego, hablemos sobre la relación entre ellos y los puntos a los que los programadores integrados deben prestar atención. Somos programadores integrados, debemos prestar atención al pensamiento de programación integrado, es decir, debemos prestar atención a la practicidad. Por lo tanto, el enfoque del aprendizaje es la gestión de datos pensando en la estructura de datos; los algoritmos son para que los ingenieros de algoritmos los estudien en profundidad, y son metodologías de naturaleza investigativa. Rara vez encontramos aplicaciones de algoritmos complejos. Por lo tanto, es suficiente para nosotros aprender los algoritmos involucrados en algunas estructuras de datos clásicas. Si está interesado en el futuro, puede continuar comprendiendo el tema de los algoritmos en profundidad; preste atención a dónde se encuentra el centro de aprendizaje en la etapa actual. .

Investigación de la estructura de datos desde tres perspectivas: relación lógica, relación de almacenamiento y relación operativa.

El siguiente diagrama muestra la relación de investigación de las tres perspectivas en la estructura de datos:

La relación lógica es una relación de datos de investigación abstracta, la relación de almacenamiento debe corresponder al almacenamiento físico, y la relación de operación es la operación de aplicación de los datos que deben estudiarse después de determinar el almacenamiento físico;

4. Varias estructuras lineales clásicas:

(1) Tabla de secuencia

La imagen de arriba muestra una tabla vacía que aún no ha almacenado datos válidos. El espacio de almacenamiento es una matriz, y la última posición de actualización de datos válidos se registra como un número entero al final, y la estructura general de la tabla es una estructura;

El modelo de código estructural es el siguiente:

#define TAMAÑO MÁXIMO 10

typedef int tipo de datos;

typedef int postipo;

lista de estructuras{

tipo de datos datos[N];

postipo último;

};

(2) Lista enlazada unidireccional

La imagen de arriba muestra una lista enlazada unidireccional con un nodo principal y constantemente se agregan nuevos nodos de datos. El espacio de almacenamiento es una estructura que necesita un campo de datos y un campo de puntero, el campo de datos almacena los datos que se almacenarán y el campo de puntero registra la primera dirección del siguiente nodo de datos;

El modelo de código estructural es el siguiente:

typedef int tipo de datos;

nodo de estructura typedef {

        datos de tipo de datos;

        nodo de estructura * siguiente;

}Nodo de enlace, *Lista de enlaces;

(3) Lista enlazada circular bidireccional

La figura anterior es una lista enlazada circular bidireccional con un nodo principal y n nodos de datos. El espacio de almacenamiento es una estructura. La estructura debe tener un campo de datos y dos campos de puntero. El campo de datos almacena los datos que se almacenarán. El primer campo de puntero debe registrar la primera dirección del nodo de datos anterior y el segundo campo de puntero debe registrar la primera dirección del siguiente nodo de datos;

El modelo de código estructural es el siguiente:

typedef int tipo de datos;

nodo de estructura typedef{

datos de tipo de datos;

nodo de estructura * anterior;

nodo de estructura *siguiente;

}DLinkNode, * DLinkList;

(4) Estructura de aplicación de estructura lineal:

① Pila--FIFO, LIFO

1) Pila secuencial:

La figura anterior muestra una pila secuencial con n espacios de almacenamiento de datos. La estructura es una estructura de pila. Tiene que haber un campo de datos y dos etiquetas de enteros en la estructura. El campo de datos son los datos que deben almacenarse en la matriz. La primera etiqueta en la parte superior registra el subíndice de la matriz de los últimos datos insertados. en la pila, y la segunda marca A len necesita registrar el tamaño de todo el espacio de almacenamiento, lo cual es conveniente para conocer la capacidad de almacenamiento de la pila;

El modelo de código estructural es el siguiente:

typedef int tipo de datos;

nodo de estructura typedef{

tipo de datos *datos;

int maxlen;

superior int;

}SeqStack,*SeqStack_t;

2) Pila encadenada

La imagen de arriba muestra una pila de cadena con un nodo principal y n espacios de almacenamiento de datos. La estructura es un nodo de datos. Debe haber un campo de datos y un campo de puntero en la estructura. El campo de datos son los datos que deben almacenarse en la matriz. El campo de puntero debe registrar la primera dirección del nodo apilado anterior. , y la parte superior de la pila es el nodo principal de la lista enlazada. El primer nodo de datos después del punto;

El modelo de código estructural es el siguiente:

typedef int tipo de datos;

nodo de estructura typedef{

datos de tipo de datos;

estructura lstacknode * siguiente;

}LinkStacknode, *LinkStacknode_t;

②Cola: primero en entrar, primero en salir, último en entrar, último en salir

1) cola secuencial

La figura anterior muestra una cola secuencial con n espacios de almacenamiento de datos. Cabe señalar que este es solo un modelo ideal. En el uso real, se debe descartar un espacio de almacenamiento para determinar si una tabla vacía está llena o no, y solo n -1 espacios de almacenamiento se utilizan. La estructura es una cola secuencial. Es necesario que haya una matriz como espacio de almacenamiento de datos en la estructura. Hay dos marcas. La primera marca registra el subíndice de la matriz de la posición anterior de los datos al principio de la cola, y la la segunda marca registra la posición de los datos al final de la cola El subíndice de la matriz;

El modelo de código estructural es el siguiente:

#definir N 10

typedef int tipo de datos;

typedef struct seqqueue{

tipo de datos datos[N];

interior delantero, trasero;

}SeqQueue, *SeqQueue_t;

2) cola de cadena

La figura anterior muestra una cola encadenada con un nodo principal y n espacios de almacenamiento de datos. La cola encadenada tiene dos modelos de estructura. El nodo de datos es la primera estructura. Debe haber un campo de datos y un campo de puntero en esta estructura. El campo de datos son los datos que deben almacenarse en la matriz, y el campo de puntero necesita registrar la última entrada. La primera dirección del nodo del equipo de pila; la segunda estructura es el modelo de cola, y se requieren dos campos de puntero en la estructura, el tipo de puntero es el puntero del primer tipo de estructura y un puntero frontal registra la primera dirección del nodo principal de la cola, el encabezado de la cola es el primer nodo de datos después del nodo principal de la lista vinculada, otro puntero posterior registra la dirección principal del nodo final de la cola y el final de la cola es el último nodo de datos de la lista enlazada.

El modelo de código estructural es el siguiente:

typedef int tipo de datos;

nodo de estructura typedef{

datos de tipo de datos;

struct linkqueuenode *siguiente;

}NodoCola, *NodoCola_t;

typedef struct linkqueue{

linkqueue_pnode delante, detrás;

}EnlaceCola, *EnlaceCola_t;

Hay otros modelos de datos no lineales en la estructura de datos y el espacio es limitado, por lo que no los enumeraré aquí y hablaremos de ellos la próxima vez. La estructura anterior tiene una amplia gama de aplicaciones. Si está interesado, ¡debe estudiar y practicar!

Los amigos que estén interesados ​​en el Internet de las cosas incorporado pueden obtener más información relevante. (revisar)

Supongo que te gusta

Origin blog.csdn.net/m0_70911440/article/details/131511919
Recomendado
Clasificación