Saltar al contenido
Home » Estructuras de Datos

Estructuras de Datos

 Arrays (Arreglos)

Los arreglos son estructuras de datos de tamaño fijo que contienen elementos del mismo tipo en ubicaciones de memoria contiguas.

  • Acceso a Elementos: Tiempo constante O(1)
  • Inserción y Eliminación: Puede ser lento (O(n)) debido al desplazamiento de elementos.
  • Complejidad Temporal: Búsqueda – O(n), Inserción/Eliminación – O(n)
  • Casos de Uso: Cuando el tamaño se conoce de antemano y se requiere acceso aleatorio.

ArrayList (Lista de Arreglos)

ArrayList es una lista de arreglos de tamaño dinámicamente ajustable que proporciona operaciones más flexibles en comparación con los arreglos regulares.

  • Métodos y Operaciones: add, get, set, remove, size, isEmpty, contains, indexOf, clear, etc.
  • Complejidad Temporal: Búsqueda – O(n), Inserción/Eliminación (al final) – Amortizado O(1)
  • Casos de Uso: Cuando se necesita un arreglo dinámico con un apéndice eficiente y acceso aleatorio.

LinkedList (Lista Enlazada)

LinkedList es una estructura de datos lineal donde los elementos se almacenan en nodos, y cada nodo apunta al siguiente nodo.

  • Tipos: Lista Enlazada Simple, Lista Enlazada Doble
  • Métodos y Operaciones: addFirst, addLast, removeFirst, removeLast, add, remove, size, etc.
  • Complejidad Temporal: Búsqueda – O(n), Inserción/Eliminación – O(1)
  • Casos de Uso: Cuando se requieren inserciones y eliminaciones frecuentes.

Stack (Pila)

Una pila es una colección de elementos con dos operaciones principales: push (insertar) y pop (eliminar).

  • Métodos y Operaciones: push, pop, peek, isEmpty, size, etc.
  • Complejidad Temporal: Push/Pop – O(1)
  • Casos de Uso: Administrar llamadas a funciones (pila de llamadas), evaluación de expresiones, etc.

Queue (Cola)

Una cola es una colección que admite agregar elementos en un extremo y eliminar elementos en el otro extremo.

  • Tipos: Cola Regular, Cola de Prioridad
  • Métodos y Operaciones: offer, poll, peek, isEmpty, size, etc.
  • Complejidad Temporal: Encolar/Desencolar – O(1) (Cola de Prioridad: O(log n))
  • Casos de Uso: Programación de tareas, recorrido en anchura, etc.

HashMap

HashMap almacena pares clave-valor y proporciona una búsqueda rápida utilizando claves.

  • Métodos y Operaciones: put, get, remove, containsKey, keySet, values, etc.
  • Complejidad Temporal: Caso promedio: O(1) para operaciones de obtención/inserción (depende de la función hash y colisiones)
  • Casos de Uso: Asociar eficientemente valores con claves.

HashSet

HashSet es una implementación de la interfaz Set que utiliza una tabla hash para almacenar elementos.

  • Métodos y Operaciones: add, remove, contains, isEmpty, size, etc.
  • Complejidad Temporal: Caso promedio: O(1) para operaciones de agregar/eliminar/contiene
  • Casos de Uso: Mantener una colección de elementos únicos.

Árbol (Tree)

Un árbol es una estructura de datos jerárquica que consiste en nodos conectados por aristas. Cada nodo puede tener un nodo padre y cero o más nodos hijos.

  • Tipos: Árbol Binario, Árbol de Búsqueda Binaria, Árbol AVL, Árbol Rojo-Negro, etc.
  • Recorridos: Inorden, Preorden, Postorden
  • Métodos y Operaciones: insertar, eliminar, buscar, encontrar mínimo/máximo, etc.
  • Complejidad Temporal: Depende del tipo específico y la operación (búsqueda, inserción, eliminación).
  • Casos de Uso: Representar datos jerárquicos, ordenación, búsqueda eficiente, etc.

Grafo (Graph)

Un grafo es una colección de nodos (vértices) y aristas que conectan pares de nodos. Los grafos pueden usarse para representar relaciones y estructuras complejas.

  • Tipos: Grafo Dirigido (Digrafo), Grafo No Dirigido
  • Representación: Matriz de Adyacencia, Lista de Adyacencia
  • Recorridos: Búsqueda en Profundidad (DFS), Búsqueda en Anchura (BFS)
  • Métodos y Operaciones: agregarVértice, agregarArista, eliminarVértice, eliminarArista, etc.
  • Complejidad Temporal: Depende de la operación específica y la estructura del grafo.
  • Casos de Uso: Modelar redes, relaciones sociales, algoritmos de enrutamiento, etc

Comprender las características y los casos de uso de las estructuras de datos de árbol y grafo es esencial para resolver problemas que involucran relaciones y jerarquías complejas. Cada tipo de estructura de datos tiene sus fortalezas y debilidades, por lo que elegir la adecuada para tu tarea es crucial para programar de manera eficiente y efectiva.