Introducción a las estructuras de datos

Introducción a las estructuras de datos

Una estructura de datos es una forma de organizar y almacenar información.

Deja que un “¡Hola, mundo!” string sea la información que necesitamos organizar y almacenar en la memoria direccionable por bytes.

Cada carácter ASCII requiere 7 bits de almacenamiento. La mayoría de los sistemas reservan 8 bits (1 byte) para cada carácter, por lo que cada carácter de “Hello, World!” se almacena en una unidad de memoria individual del tamaño de un byte, uno tras otro, consecutivamente.

Necesitamos una sola referencia a nuestra cadena aunque abarque varias direcciones de memoria, por lo que usamos la dirección del primer carácter de la cadena, ‘H’. Se puede acceder a cualquier otro carácter en la dirección de ‘H’ + el índice de ese carácter usando caracteres con índice cero.

Queremos imprimir nuestra cadena, “¡Hola, mundo!” Conocemos su dirección en la memoria, que proporcionamos a la función de impresión, pero ¿cómo sabe la función de impresión que debe dejar de imprimir ubicaciones de memoria consecutivas? Un enfoque común es agregar el carácter nulo, ‘\0’, a la cadena. Cuando la función de impresión encuentra el carácter nulo, sabe que ha llegado al final de la cadena.

Hemos definido una forma de organizar y almacenar nuestra cadena, es decir, ¡una estructura de datos! Esta estructura de datos muy simple es una matriz de caracteres terminada en nulo, que es una forma de organizar y almacenar una cadena.

Matriz: una estructura de datos simple

Una estructura de datos de matriz se utiliza para almacenar objetos similares (o datos valores) en un bloque contiguo de memoria. La estructura de datos de matriz tiene tamaño fijo, que determina el número de valores de datos que se pueden almacenado en él.


Matriz: al estilo C++

En el lenguaje de programación C ++, podemos declarar una matriz estática de la siguiente manera

int arrayName[100];

Aquí hemos declarado una matriz denominada “arrayName” que puede almacenar hasta 100 valores, todos los cuales son del mismo tipo, es decir, un número entero.

Ahora, discutiremos algunas ventajas y desventajas de esta estructura de datos.

  1. Podemos acceder a los valores de datos almacenados en Array en tiempo constante, es decir, la complejidad del tiempo es [O (1)] 1. Entonces, si queremos acceder al valor de los datos almacenados en la posición i-ésima, no necesitamos comenzar desde la posición inicial y movernos hasta la posición i-ésima, sino que podemos saltar directamente a la posición i-ésima, ahorrando así tiempo de cálculo.

  2. Insertar un elemento en medio de una matriz no es una tarea eficiente. Supongamos que queremos agregar un nuevo elemento en la matriz en la i-ésima posición, entonces primero debemos mover todos los elementos en (i-ésima) y (i+1 ésima) posición para crear espacio para el nuevo elemento. Ejemplo: 1 4 2 0 es una matriz con 4 elementos, ahora queremos insertar 3 en la segunda posición, luego necesitamos mover 4,2 y 0 una posición más para crear espacio para 3.

    1 3 4 2 0

  3. De manera similar a la inserción del elemento, la eliminación de un elemento desde una i-ésima posición en una matriz tampoco es eficiente ya que necesitamos mover todos los elementos por delante del elemento eliminado por 1 bloque para llenar el espacio vacío creado por el elemento eliminado.

Estas son 3 características simples de una matriz. Aquí puede creer que la matriz no es una estructura de datos eficiente, pero en la práctica, la ventaja de una matriz puede superar sus desventajas. Esto depende en gran medida del tipo de propósito que desee cumplir, es posible que no desee insertar o eliminar elementos con la frecuencia con la que desea acceder a ellos, en ese caso, una matriz es una estructura de datos absolutamente perfecta.

El único propósito de presentar esta estructura de datos es asegurarse de que simplemente no elige la estructura de datos en función de la cantidad de ventajas y desventajas, pero siempre debe intentar analizar la importancia de la estructura de datos teniendo en cuenta su problema, por ejemplo, si pasará mucho tiempo accediendo a valores de datos en comparación con insertarlos o eliminarlos, en ese caso, debemos dar más peso a la ventaja que a la desventaja.