Bienvevnidos sean a este post,hoy hablaremos sobre este tipo de estructuras.
En el post anterior vimos una de ellas como son las listas enlazadas donde por medio de «nodos» podiamos emular una estructura similar a una coleccion o array pero con la particularidad de que no tenia un tamaño fijo como estos sino que podiamos variarlo en base a nuestra necesidad de forma dinamica con los movimientos tanto al frente como al final de la lista esto es una implementacion muy simple de este tipo de estructura, dejando afuera acciones como:
- concatenar, la accion de unir dos listas distintas
- dividir, tomar una lista y separarla en varias en base a un criterio
- ordenar, sobre la lista ordenar sus elementos en base a un criterio
- reverso, para invertir el orden de una lista
Asi como tambien mejorar los metodos de ingreso y borrado que ya poseemos, por ejemplo permitir estas acciones en cualquier parte de la lista, a continuacion les dejo una breve descripcion de otros tipos de estructuras de datos dinamicas que nos pueden ser utiles.
Lista enlazada double
Este tipo de lista no solo posee un punero al siguiente nodo de la lista, sino que a su vez tiene otro apuntador al nodo que le precede en la lista, esto nos facilita que podamos pasar atraves de ella tanto de adelante hacia atras como al reves.
Stack
Este es una lista enlazada tambien pero que solamente agrega los elementos nuevos en el frente de la lista, empujandolo en el stack, a su vez cada nodo de la lista solo es removido del frente de la lista (sacado del stack) a lo cual se lo conoce como la lista LIFO (Last In First Out).
Queue
Este es otra lista enlazada que a diferencia del anterior solo los agregara por la parte de atras, lo que se denomina habitualmente como encolar (enqueue), y en este caso cada nodo solo es removido al frente de la lista, se llama desencolar (dequeue), y tambien pueden encontrarlo como lista FIFO (First In First Out).
Deque
Una lista generalizada que combina las caracteristicas de las listas Stack y Queue permitiendo que los nodos de la lsita puedan ser agregados o removidos en cualquier parte de la lista, la implementacion que vimos en el post anterior es muy a similar a este tipo.
Priority queue
Es una lista donde cada nodo de la misma tiene una prioridad propia, estos son agregados en base a la prioridad del nodo, esto tambien aplica a cuando lo removemos dado que se hara en base al esquema de programacion.
Set
Es una coleccion de elementos unicos en ningun orden en particular, y en algunas ocasiones son implementadas utilizando otras estructuras de datos dinamicos tales como tree o hash table.
Map
Es una coleccion de pares (clave y valor) donde tendremos una clave (key) que sera unico e irrepetible el cual tendra un valor asociado a este y para buscar este valor sera mediante la clave, estos se los puede conocer como:
- Array asociativo
- Tabla de simbolo
- Diccionario
Tree
Este simula una estructura de arbol jerarquica, el cual contendra un nodo raiz unico desde el cual cada nodo hijo forma una rama, al igual que las ramas de un arbol, a su vez estos nodos hijos pueden contener solo sub-hijos y no se pueden enlazar a otras ramas.
Graph
Este es una coleccion de nodos conectados por enlaces, este tipo es mas de una forma general de un arbol en el sentido de que puede tener ciclos donde un nodo de una rama puede vincularse con la raiz o un nodo en otra rama.
Esta son los distintos tipos de estructuras de datos dinamicos que tenemos disponibles en el lenguaje, si bien no ahondaremos en cada uno de ellos en un un futuro consigo un buen material y lo entiendo 😅 prometo armar una serie de posts explicando cada uno de ellos.
En resumen, hoy hemos visto de manera resumida y superficial otros tipos de estructuras de datos dinamicas, algunas caracteristicas propias, asi como pueden denominarlos, y prometo si encuentro buen material armare algo para explicarlos, espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donación
Es para mantenimento del sitio, gracias!
$1.50
