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.
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:
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
Implementación usando arrays o listas enlazadas
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:
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.
Á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 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.
Operaciones Básicas:
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 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.
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:
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:
Operaciones Básicas en una Tabla Hash
Inserción:
Búsqueda:
Eliminación: