un programador y estructuras de datos

10 ESTRUCTURAS DE DATOS que TODO programador debe conocer

Feb 23, 2023

 Pregunta de entrevista: la estructura de datos utilizaría para encontrar la distancia más corta entre una ciudad y otra si te doy 20 ciudades. Para responder esta pregunta, necesitas conocer sobre estructuras de datos. 

Las estructuras de datos son un medio especializado de organizar y almacenar datos en los computadores. Esto con el fin de que podamos realizar operaciones más eficientes con los datos almacenados. 

La realidad es que, si quieres optar por un puesto como programador en grandes compañías como Facebook, Google o Amazon, no podrás escapar de las preguntas como la que te mencioné antes. Es por eso que en este artículo te voy a explicar 10 estructuras de datos que todo programador debe conocer

1. Tabla hash 

Si ya has trabajado con lenguajes de programación como Python o JavaScript una tabla hash es simplemente un objeto en JavaScript o un diccionario en Python. La tabla hash es una estructura de datos que los almacena de forma asociativa. 

En una tabla hash, los datos se almacenan en un formato de array, donde cada valor de datos tiene su propio y único valor de índice. El acceso a los datos es muy rápido si conocemos el índice de la información deseada. Tal como lo es buscar los capítulos en el índice de un libro. 

Así, pasa a ser una estructura de datos en la que las operaciones de inserción y búsqueda son muy rápidas, independientemente del tamaño de los mismos. Esta es quizás la estructura de datos más importante en toda tu carrera como programador. 

2. Listas

Además de la tabla hash, la lista es la segunda estructura de datos más utilizada por los programadores. Una lista es una estructura secuencial que consiste en una sucesión de elementos en orden lineal.

Por lo tanto, hay que acceder a los datos secuencialmente y no es posible el acceso aleatorio. Ya que estos elementos se almacenan uno detrás de otro en las celdas de tu memoria. Las listas enlazadas proporcionan una representación sencilla y flexible de los conjuntos dinámicos.

Si queremos aumentar el tamaño de una lista, cuando estamos utilizando un espacio continuo en la memoria y el siguiente está ocupado, sería necesario copiar toda esa lista a una nueva sección para poder utilizarla. Hoy en día muchas de estas operaciones pasan por alto sin que tú te preocupes mucho de ellas. Aunque en una entrevista de trabajo conocer sobre este proceso es esencial. 

3. Pilas

Una pila es una estructura que se puede encontrar comúnmente en muchos lenguajes de programación. Esta estructura recibe el nombre de "pila" porque se asemeja a una del mundo real.

Una pila sólo permite operaciones en un extremo. Por ejemplo, únicamente podemos colocar o retirar una carta o un plato de la parte superior de la pila. Del mismo modo, una pila en programación, permite todas las operaciones de datos en un solo lado. En cualquier momento, sólo podemos acceder al elemento superior de la misma.

Esta estructura puede parecer muy similar a una lista y la verdad es que lo es, con ciertas restricciones. Esto nos ayudará a que nuestro código sea más eficiente que si usáramos sólo una lista. 

4. Colas

La cola es una estructura de datos abstracta, algo similar a la pila. A diferencia de ésta, una cola está abierta por ambos extremos. Un extremo se utiliza siempre para insertar datos y el otro para eliminarlos. La cola sigue la metodología "primero en entrar, primero en salir". Es decir, se accede primero al elemento de datos almacenado en primer lugar.

Un ejemplo real de cola puede ser una carretera unidireccional de un solo carril, donde el vehículo que entra primero, sale primero. Otros ejemplos reales son las colas en las taquillas y paradas de autobús. En la programación funciona justo así.

Si quieres aprender más sobre esta estructura de datos y las otras que menciono aquí, te invito a mi curso de Academia X donde te explico estos conceptos. Así como también te doy consejos sobre cómo prepararte para entrevistas laborales de la industria informática.  

5. Lista enlazada

Una lista enlazada es una estructura de datos lineal que incluye una serie de nodos conectados. En ella, cada nodo almacena los datos y la dirección del siguiente nodo. A diferencia de una lista común, la lista enlazada puede crecer sin ningún problema. 

Si recuerdas, en la lista teníamos elementos continuos y si queremos incrementar el tamaño de ésta, tenemos que copiarla toda a otra sección de la memoria que tenga más. Con la lista enlazada no tenemos que hacer esto ya que cada uno de los elementos se guardan en diferentes partes de la memoria.

6. Árbol

Un árbol es una estructura jerárquica en la que los datos se organizan en orden y se enlazan entre sí. Esta estructura es diferente de una lista enlazada, ya que en ésta los elementos se vinculan en orden lineal.

A lo largo de las últimas décadas se han desarrollado varios tipos de árboles para adaptarse a determinadas aplicaciones y cumplir con ciertas restricciones. Algunos ejemplos son el árbol de búsqueda binario, árbol binario, el árbol B, entre otros.

Un árbol es una estructura exactamente tal como te la imaginas. Vas a tener un nodo que va a ser una raíz y ésa se va a conectar a diferentes nodos que pueden tener diferentes nodos hijos. De esta manera vas creando un árbol 

Si has trabajado con DOM o con HTML te vas a dar cuenta que esta estructura es un árbol. El DOM es un árbol donde tienes al HTML que es el elemento padre y a su vez tienes elementos hijos como head y body. Cada uno de estos también puede tener hijos.  

7. Árbol binario

El árbol binario es una estructura de datos especial que se utiliza para almacenar información. Un árbol binario tiene la condición especial de que cada nodo puede tener un máximo de dos hijos. 

Esta estructura tiene las ventajas de un array ordenado y de una lista enlazada. Dado que la búsqueda es tan rápida como en un array y las operaciones de inserción o borrado son tan eficientes como en una lista enlazada. Se suelen utilizar para implementar analizadores y solucionadores de expresiones.

8. Árbol binario de búsqueda

Un árbol binario de búsqueda, como su nombre indica, es un árbol binario en el que los datos se organizan en una estructura jerárquica. Esta estructura de datos almacena valores ordenados. En este tipo de árbol, todos los nodos siguen las siguientes propiedades:

  • El valor de la clave del subárbol izquierdo es menor que el valor de la clave de su nodo padre.
  • El valor de la clave del subárbol derecho es mayor o igual que el valor de la clave de su nodo padre.

Si estás buscando un nodo en cierta locación y sabes que sigue estas reglas que expliqué entonces llegar al nodo que estás buscando va a ser bastante sencillo. Simplemente tienes que buscar si este nodo es mayor o menor que el principal. 

En el caso de que sea mayor, vas a un lado. Pero si por el contrario es menor, te desplazas al lado contrario. De esta forma, vas a ir por cada uno de los elementos y llegarás bastante rápido a lo que estás buscando. 

9. Grafos

Un grafo está formado por un conjunto finito de vértices o nodos y un grupo de aristas que conectan dichos nodos. El orden de un grafo es el número de vértices que lo componen. Por su parte, el tamaño es el número de aristas del mismo. Se dice que dos nodos son adyacentes si están conectados entre sí por la misma arista.

Los grafos, se utilizan para representar páginas web y enlaces en los motores de búsqueda. Las páginas web de internet están enlazadas entre sí mediante hipervínculos. Cada página es un vértice y el hipervínculo entre dos páginas es una arista.

10. Heap

Un Heap es un caso especial de árbol binario en el que los nodos padres se comparan con sus hijos con sus respectivos valores y se organizan en consecuencia. La idea detrás de esta estructura de datos es que nos permite priorizar ciertos elementos. 

Por ejemplo, podemos tener esta estructura y queremos dar preferencia a un nuevo elemento que vamos a procesar. Entonces, cada vez que ingresemos un nuevo elemento a este, se va a reordenar y de esta manera vamos a tener un acceso bastante rápido al elemento que queremos procesar.

Los heaps pueden ser de 2 tipos:

Min Heap – esto es cuando la clave del padre es menor o igual que la de sus hijos. Esto se denomina propiedad min-heap. La raíz contendrá el valor mínimo del montón.

Max Heap – aquí, la clave del padre es mayor o igual que la de sus hijos. Esto se denomina como propiedad max-heap. La raíz contendrá el valor máximo del montón.

Palabras finales

Como te dije antes, todas estas estructuras de datos están en mi bootcamp. Y no sólo las implementamos en código en mis cursos, sino que también hacemos el análisis de complejidad de tiempo y espacio para sus diferentes funciones principales. Como lo puede ser una búsqueda, ingresar, retirar o reordenar elementos. Así como otras operaciones. 

Aprende a trabajar con todas estas estructuras de datos y te aseguro que vas a llegar bastante lejos. No sólo vas a crear aplicaciones más eficientes, sino que también vas a poder trabajar en las compañías más grandes del mundo. ¿Qué esperas para empezar?

 

¡Suscríbete a nuestro NewsLetter!

No te enviaremos SPAM. Nunca venderemos su información, por ningún motivo.

Nuestros planes

Otros Blogs de interés

Ruta para Aprender Herramientas Web (Temario Completo)

Oct 25, 2024

Ruta para Aprender Hosting (Temario Completo)

Oct 25, 2024

Ruta para Aprender Django (Temario Completo)

Oct 25, 2024

Ruta para Aprender Express (Temario Completo)

Oct 25, 2024