¿Me puede explicar qué es una estructura de datos?

Aunque las computadoras pueden realizar literalmente millones de cálculos matemáticos por segundo, cuando un problema se vuelve grande y complicado, el rendimiento puede ser una consideración importante. Uno de los aspectos más cruciales para la rapidez con que se puede resolver un problema es cómo se almacenan los datos en la memoria.

Para ilustrar este punto, considere ir a la biblioteca local para encontrar un libro sobre un tema específico. Lo más probable es que pueda utilizar algún tipo de referencia electrónica o, en el peor de los casos, un catálogo de tarjetas, para determinar el título y el autor del libro que desea. Dado que los libros generalmente están archivados por categoría, y dentro de cada categoría ordenada por el nombre del autor, es un proceso bastante sencillo e indoloro seleccionar físicamente su libro de los estantes.

Ahora, supongamos que en lugar de eso viniste a la biblioteca en busca de un libro en particular, pero en lugar de estantes organizados, te saludaron con grandes bolsas de basura que se alineaban a ambos lados de la habitación, cada una llena arbitrariamente de libros que pueden o no tener algo que ver con unos y otros. Tomaría horas, o incluso días, encontrar el libro que necesitabas, una eternidad comparativa. Así es como se ejecuta el software cuando los datos no se almacenan en un formato eficiente apropiado para la aplicación.

En ciencias de la computación, una estructura de datos es una forma particular de organizar los datos en una computadora para que puedan usarse de manera eficiente. Las estructuras de datos pueden implementar uno o más tipos de datos abstractos particulares (ADT), que especifican las operaciones que se pueden realizar en una estructura de datos y la complejidad computacional de esas operaciones. En comparación, una estructura de datos es una implementación concreta de la especificación proporcionada por un ADT.

Las estructuras de datos proporcionan un medio para administrar grandes cantidades de datos de manera eficiente para usos tales como grandes bases de datos y servicios de indexación de Internet. Por lo general, las estructuras de datos eficientes son clave para diseñar algoritmos eficientes. Algunos métodos de diseño formales y lenguajes de programación enfatizan las estructuras de datos, en lugar de los algoritmos, como el factor clave de organización en el diseño de software. Las estructuras de datos se pueden usar para organizar el almacenamiento y la recuperación de la información almacenada tanto en la memoria principal como en la memoria secundaria.

Las estructuras de datos generalmente se basan en la capacidad de una computadora para obtener y almacenar datos en cualquier lugar de su memoria, especificada por un puntero, una cadena de bits, que representa una dirección de memoria, que puede ser almacenada en la memoria y manipulada por el programa. Por lo tanto, la matriz y las estructuras de datos de registro se basan en el cálculo de las direcciones de los elementos de datos con operaciones aritméticas; mientras que las estructuras de datos vinculadas se basan en el almacenamiento de direcciones de elementos de datos dentro de la estructura misma. Muchas estructuras de datos utilizan ambos principios, a veces combinados de manera no trivial (como en el enlace XOR).

La implementación de una estructura de datos generalmente requiere escribir un conjunto de procedimientos que crean y manipulan instancias de esa estructura. La eficiencia de una estructura de datos no se puede analizar por separado de esas operaciones. Esta observación motiva el concepto teórico de un tipo de datos abstractos, una estructura de datos que se define indirectamente por las operaciones que se pueden realizar en él, y las propiedades matemáticas de esas operaciones (incluido su costo de espacio y tiempo).

Enlaces:

  • Estructuras de datos – topcoder
  • Estructura de datos
  • Conceptos básicos de estructuras de datos
  • Introducción a las estructuras de datos
  • Introducción a estructuras y algoritmos de datos básicos y avanzados

Fuente:

  • Estructuras de datos – topcoder
  • Estructura de datos

Suponga que tiene un montón de camisetas, cuidadosamente dobladas y colocadas una encima de la otra en el cajón, de modo que solo puede ver la camiseta en la parte superior. Ahora, suponga que hoy está buscando su camiseta amarilla favorita, pero no está seguro de dónde está en la pila. Entonces, se quita uno a la vez, hasta que finalmente se da cuenta de que ha mirado a través de una sola camiseta en el cajón, pero la camiseta amarilla todavía no se encuentra en ninguna parte. Esto es cuando te das cuenta de que la camiseta amarilla está realmente en el cesto, no en el cajón.

Ahora suponga que tiene la costumbre de organizar estas camisetas para que las camisas del mismo color se agrupen juntas, y va de color claro a color oscuro de arriba a abajo. Entonces, buscar el amarillo simplemente requiere que vayas desde la parte superior, hasta que llegues a una camisa de color más oscuro, en ese momento, sabes que la camiseta amarilla no está allí.

La estructura de datos es la forma en que la computadora organiza los datos de cierta manera para que sea más fácil encontrarlos o manipularlos. El programa de computadora generalmente busca datos de la misma manera que nuestro ejemplo, algo así sucede en casi todos los programas:

for (int i = 0; i if (stackOfTShirts [i] .color == COLOR_YELLOW) {
return stackOfTShirts [i];
}
}

Lo que hace este fragmento de código es un enfoque iterativo para buscar algo que necesita, una camiseta amarilla en este caso. Pero si organizamos los datos de una manera particular, las cosas pueden ser más eficientes:

for (int i = 0; i if (stackOfTShirts [i] .color == COLOR_YELLOW) {
return stackOfTShirts [i];
} else if (stackOfTShirts [i] .color> COLOR_YELLOW) {
// todas las demás camisas son más oscuras, deja de mirar
devuelve NULL;
}
}

En caso de que no se encuentre su camiseta amarilla, puede dejar de mirar tan pronto como vea un color más oscuro que el amarillo.

Esa es la idea básica de la estructura de datos.

Y como se define adecuadamente en Wikipedia:

Una estructura de datos es una forma particular de organizar los datos en una computadora para que pueda usarse de manera eficiente.

Estructura de datos: la palabra en sí misma dice que estructura los datos de una manera particular. Creo que las estructuras de datos provienen del uso diario.

Las estructuras de datos en la programación de computadoras no es más que almacenar los datos dados de una manera particular para realizar operaciones eficientes. Hay muchas estructuras de datos disponibles que van desde pilas hasta árboles, etc. Creo que la mayoría de las estructuras de datos que vemos provienen del uso común. Supongamos que tome una pila, en términos de informática se conoce generalmente como LIFO (último en entrar, primero en salir). Por ejemplo, consideremos un ejemplo como una pila de libros, digamos que hay 10 libros. Para eliminar el último libro, debemos eliminar todos los 9 libros que están encima y luego tomar el décimo libro, stack también funciona de la misma manera.

Entonces, creo que eso te da una breve idea de qué es una estructura de datos.

Nota: Si me equivoco en algún lugar, o si encuentra algún error, por favor mencione en los comentarios.

Gracias.

Comencemos con un ejemplo de cocina. Mantenemos los platos, cuencos en diferentes cajones, así que siempre que queramos un plato, podríamos abrir directamente ese cajón en particular y podemos obtener el plato fácilmente. Lo mismo con la estructura de datos. Puedes pensar en el cajón como una estructura de datos. Platos y cuencos como datos.

La estructura de datos no es más que la forma en que organizamos nuestros datos Para poder manipularlos fácilmente.

La Estructura de datos es una forma de organizar los datos de tal manera que puedan usarse de manera eficiente.

El tipo de datos es una forma de clasificar varios tipos de datos, como enteros, cadenas, etc., que determina los valores que se pueden usar con el tipo de datos correspondiente, el tipo de operaciones que se pueden realizar en el tipo de datos correspondiente. Tipo de datos de dos tipos:

  • Tipo de datos incorporado
  • Tipo de datos derivados

Tipo de datos incorporado

Los tipos de datos para los que un idioma tiene soporte incorporado se conocen como tipos de datos incorporados. Por ejemplo, la mayoría de los idiomas proporciona los siguientes tipos de datos integrados.

  • Enteros
  • Booleano (verdadero, falso)
  • Flotante (números decimales)
  • Carácter y cadenas

Tipo de datos derivados

Los tipos de datos que son independientes de la implementación, ya que pueden implementarse de una u otra forma, se conocen como tipos de datos derivados. Estos tipos de datos normalmente se crean mediante la combinación de tipos de datos primarios o integrados y operaciones asociadas en ellos. Por ejemplo

  • Lista
  • Formación
  • Apilar
  • Cola

More Interesting

Cómo implementar el mapa usando el árbol de búsqueda binario en Java

¿Cómo implementas quicksort en c? Sé que hay respuestas disponibles en línea, pero estoy buscando idealmente la forma más elegante.

Juez en línea de Esfera (SPOJ): ¿Por qué el siguiente código da como resultado TLE? Quiero saber cómo se puede optimizar mi código para evitarlo.

Dada una matriz con 100 elementos (números del 0 al 99), si saco un elemento aleatorio, ¿cómo encontrarías el que saqué? ¿Cómo resolvería esto si 1: la matriz está ordenada o 2: la matriz no está ordenada?

¿Qué estructuras de datos admiten la inserción, eliminación y selección de un elemento aleatorio con un límite de complejidad de tiempo O (1) que permite duplicados?

¿Podemos modificar la técnica de descomposición de la raíz cuadrada a la descomposición de la raíz cúbica? Si no, ¿por qué?

¿Cómo podemos almacenar los enlaces de una lista vinculada en una matriz dinámica?

Cómo guardar un árbol binario en una matriz de recorrido en orden

¿Por qué las estructuras de datos y los algoritmos son tan importantes en informática?

¿Alguien puede enumerar las dosis de azufre homeopáticas en orden ascendente?

¿Cuáles son los diferentes métodos utilizados para representar el árbol binario?

¿Vale la pena tomar el curso de Algoritmos de Udacity?

¿Cuáles son los algoritmos que se pueden usar en aplicaciones web del mundo real además de ordenar o buscar?

¿Bajo qué escenarios son apropiados los siguientes algoritmos de ruta más corta?

¿Cómo demostramos que un gráfico conectado con n nodos y más de n-1 aristas debe contener ciclo?