Estructuras de Datos

  1. Arrays (Arreglos)
  2. Definición y características:

    Arrays (Arreglos) es una estructura de datos que almacena una colección de elementos del mismo tipo en una secuencia contigua en memoria. Cada elemento del arreglo puede ser accedido mediante un índice, que generalmente comienza en 0.

    Características principales de los arrays

    Operaciones básicas: acceso, inserción, eliminación

    Acceso:

    Inserción:

    Eliminación:

    Arrays multidimensionales

    Un array multidimensional es una estructura de datos que contiene otros arrays como elementos. Puedes imaginarlo como una matriz en la que cada celda puede contener otro array, permitiendo la creación de estructuras de datos complejas y jerárquicas.

  3. Listas Enlazadas
  4. Una lista enlazada es una estructura de datos compuesta por nodos. Cada nodo contiene un valor y una referencia (o enlace) al siguiente nodo en la secuencia. Las listas enlazadas permiten una inserción y eliminación de elementos eficientes, especialmente en comparación con los arrays, donde estos procesos pueden ser más costosos.

    Listas enlazadas simples

    Listas doblemente enlazadas

    Listas circularmente enlazadas

    Una lista enlazada circular es una variación de la lista enlazada. Es una lista enlazada cuyos nodos están conectados de tal manera que forma un círculo, también pueden ser vistas como listas sin comienzo ni fin. En pocas palabras una lista enlazada circular, el primer y el último nodo están unidos juntos.

    Operaciones básicas: inserción, eliminación, búsqueda

    Inserción:

    Eliminación:

    Búsqueda:

  5. Pilars (Stacks)
  6. Las pilas (stacks) son una estructura de datos donde tenemos una colección de elementos, y sólo podemos hacer dos cosas:

    Principio LIFO (Last In, First Out)

    En una pila, el último elemento insertado es el primero en ser retirado. Puedes pensar en una pila como una pila de platos: puedes agregar un plato en la parte superior y solo puedes retirar el plato de la parte superior.

    Operaciones: push, pop, peek


  7. Colas (Queues) - Principio FIFO (First In, First Out)
  8. Una cola FIFO garantiza que los artículos se procesan en el orden exacto en que se reciben. Imagínesela como la cola de una cafetería, donde el primer cliente en llegar es el primero en ser atendido.

    Colas simples

    Las colas simples son la forma más básica de una estructura de cola. En este tipo, los elementos se añaden al final y se retiran del frente siguiendo el principio FIFO (First In, First Out).

    Colas circulares

    Las colas circulares son una variación de las colas simples que usan un arreglo de tamaño fijo para almacenar elementos. Cuando el final del arreglo es alcanzado, el siguiente elemento se coloca al inicio del arreglo, formando un "circular buffer" o buffer circular

    Colas de prioridad

    En una cola de prioridad, cada elemento tiene una prioridad asociada. Los elementos con mayor prioridad se extraen antes que los elementos con menor prioridad, independientemente de su orden de entrada.

    En una cola de prioridad, cada elemento tiene una prioridad asociada. Los elementos con mayor prioridad se extraen antes que los elementos con menor prioridad, independientemente de su orden de entrada.

    Operaciones:


  9. Árboles
  10. Se les llama estructuras dinámicas, porque las mismas pueden cambiar tanto de forma como de tamaño durante la ejecución del programa. Y estructuras no lineales porque cada elemento del árbol puede tener más de un sucesor

    Árbol binario

    Un árbol binario es una estructura de datos en la que cada nodo tiene como máximo dos hijos: un hijo izquierdo y un hijo derecho.

    Arbol binario

    Árbol de búsqueda binaria (BST)

    Un árbol de búsqueda binaria es un árbol binario en el que, para cada nodo:

    Árbol AVL (autobalanceado)

    Un árbol AVL es un tipo de árbol binario de búsqueda auto-balanceado. La diferencia de altura entre los subárboles izquierdo y derecho de cualquier nodo no puede ser más de uno. Esto asegura que el árbol se mantenga equilibrado, garantizando tiempos de operación logarítmicos para las operaciones de búsqueda, inserción y eliminación.

    Árbol AVL(autobalanceado)

    Árbol B - Árbol N-ario

    Un árbol N-ario es una estructura de datos en la que cada nodo puede tener hasta N hijos. Estos árboles son útiles en aplicaciones como sistemas de archivos y estructuras jerárquicas.

    árbol N-ario

    Operaciones Básicas:


  11. Grafos
  12. Un grafo es una estructura matemática que consta de un conjunto de nodos (o vértices) y un conjunto de aristas (o arcos) que conectan pares de nodos. Los grafos se utilizan para modelar relaciones y conexiones en diversos contextos, como redes sociales, rutas de transporte y muchos más.

    Definición y representación (matriz de adyacencia, lista de adyacencia)

    Hay dos formas comunes de representar un grafo:

    Matriz de adyacencia: El grafo está representado por una matriz cuadrada M de tamaño, donde es el número de vértices. Si hay una arista entre un vértice x y un vértice y, entonces el elemento es 1, de lo contrario, es 0.

    Lista de adyacencia: Cada vértice tiene una lista de vértices los cuales son adyacentes a él. Esto causa redundancia en un grafo no dirigido (ya que A existe en la lista de adyacencia de B y viceversa), pero las búsquedas son más rápidas, al costo de almacenamiento extra.

    Grafos dirigidos y no dirigidos

    Un grafo dirigido o digrafo es un tipo de grafo en el cual las aristas tienen un sentido definido, a diferencia del grafo no dirigido, en el cual las aristas son relaciones simétricas y no apuntan en ningún sentido

    Grafos dirigidos y no dirigidos

    Grafos no ponderados

    En un grafo no ponderado, las aristas no tienen un valor o peso asociado. La única información que se tiene sobre las aristas es si están presentes o no, es decir, simplemente indican la existencia de una conexión entre dos nodos

    Algoritmos básicos: BFS (Breadth-First Search), DFS (Depth-First Search)son dos algoritmos fundamentales para recorrer o buscar en grafos. Ambos tienen diferentes enfoques y aplicaciones dependiendo de la estructura del grafo y el problema en cuestión.

    bfs-vs-dfs

    Breadth-First Search (BFS) es un algoritmo que explora los nodos de un grafo nivel por nivel a partir de un nodo inicial. Utiliza una cola para llevar un registro de los nodos que deben ser explorados. Es útil para encontrar el camino más corto en términos de número de aristas en un grafo no ponderado.

    Características principales:

    Depth-First Search (DFS) es un algoritmo que explora los nodos de un grafo a lo largo de una rama antes de retroceder y explorar otras ramas. Utiliza una pila (ya sea explícita o implícita mediante recursión) para llevar un registro de los nodos que deben ser explorados.

    Características principales:

  13. Tablas Hash
  14. Concepto de función hash

    Las tablas hash son una estructura de datos que proporciona una forma eficiente de almacenar y buscar datos mediante el uso de una función de hash. Son ampliamente utilizadas en programación y en sistemas de bases de datos debido a su capacidad para realizar operaciones de inserción, eliminación y búsqueda de manera rápida, generalmente en tiempo constante promedio.

    Manejo de Colisiones

    Las colisiones ocurren cuando dos o más claves diferentes se mapean al mismo índice en la tabla hash. Existen dos métodos comunes para manejar colisiones:

    1. Encadenamiento (Chaining):
    2. Dirección Abierta (Open Addressing):

    Operaciones Básicas en una Tabla Hash

    Inserción:

    Búsqueda:

    Eliminación: