Sobes.tech
Intern

¿Qué estructuras de datos existen?

sobes.tech AI

Respuesta de la IA

Existen las siguientes estructuras de datos principales:

Primitivas:

  • Números enteros (Integer)
  • Números de punto flotante (Floating-point numbers)
  • Valores booleanos (Boolean)
  • Caracteres (Character)

Abstractas:

  • Array: Colección ordenada de elementos del mismo tipo, acceso por índice con tiempo constante.
  • Lista enlazada (Linked List): Colección de nodos, cada uno contiene datos y una referencia al siguiente nodo. Inserciones/eliminaciones eficientes al principio/final, acceso por índice - $O(n)$.
    • Lista enlazada simple (Singly Linked List)
    • Lista doblemente enlazada (Doubly Linked List)
    • Lista circular (Circular Linked List)
  • Pila (Stack): Estructura LIFO (Last-In, First-Out). Operaciones: push (agregar), pop (eliminar), peek (ver el elemento superior).
    struct Stack<Element> {
        private var elements: [Element] = []
    
        mutating func push(_ element: Element) {
            elements.append(element)
        }
    
        mutating func pop() -> Element? {
            return elements.popLast()
        }
    
        func peek() -> Element? {
            return elements.last
        }
    
        var isEmpty: Bool {
            return elements.isEmpty
        }
    }
    
  • Cola (Queue): Estructura FIFO (First-In, First-Out). Operaciones: enqueue (agregar), dequeue (eliminar), peek (ver el primer elemento).
    struct Queue<Element> {
        private var elements: [Element] = []
    
        mutating func enqueue(_ element: Element) {
            elements.append(element)
        }
    
        mutating func dequeue() -> Element? {
            guard !elements.isEmpty else { return nil }
            return elements.removeFirst()
        }
    
        func peek() -> Element? {
            return elements.first
        }
    
        var isEmpty: Bool {
            return elements.isEmpty
        }
    }
    
  • Tabla hash (Hash Table) / Diccionario (Dictionary) / Array asociativo (Associative Array): Colección de pares "clave-valor", permite búsqueda, inserción y eliminación eficientes por clave usando función hash.
    var dictionary = [String: Any]() // Ejemplo de diccionario en Swift
    dictionary["key1"] = "value1"
    let value = dictionary["key1"]
    
  • Conjunto (Set): Colección no ordenada de elementos únicos. Soporta operaciones: agregar, eliminar, verificar existencia, unión, intersección, diferencia.
    var set: Set<Int> = [1, 2, 3] // Ejemplo de conjunto en Swift
    set.insert(4)
    let containsTwo = set.contains(2)
    
  • Árbol (Tree): Estructura jerárquica de datos, compuesta por nodos conectados por aristas. Tiene nodo raíz y nodos hijos.
    • Árbol binario (Binary Tree)
    • Árbol binario de búsqueda (Binary Search Tree - BST)
    • Árbol binario balanceado (Balanced Binary Tree) - AVL, árbol rojo-negro.
    • Árbol B (B-Tree)
  • Grafo (Graph): Conjunto de vértices (nodos) y aristas (conexiones), que unen vértices. Puede ser dirigido o no dirigido, ponderado o no ponderado.

Comprender estas estructuras de datos es crucial para escribir código eficiente y escalable. La elección de la estructura adecuada depende de los requisitos de rendimiento (búsqueda, inserción, eliminación) y la naturaleza de los datos.