Skip to article frontmatterSkip to article content

Ejercicios: Estructuras de Datos

Acerca de

Estos ejercicios se enfocan en la implementación de estructuras de datos dinámicas fundamentales utilizando punteros y struct. El objetivo es comprender cómo se construyen y manipulan estas estructuras en memoria, gestionando las relaciones entre nodos.

1: Lista Enlazada Simple

Una lista enlazada es una colección de nodos donde cada nodo contiene un dato y un puntero al siguiente nodo de la secuencia.

typedef struct nodo {
    int dato;
    struct nodo *siguiente;
} nodo_t;

1.1: Crear y Destruir

1.2: Inserción

1.3: Eliminación y Búsqueda

2: Pila (Stack) - LIFO

Una pila sigue el principio LIFO (Last-In, First-Out). Se puede implementar eficientemente usando una lista enlazada como estructura subyacente.

2.1: Implementación con Lista Enlazada

3: Cola (Queue) - FIFO

Una cola sigue el principio FIFO (First-In, First-Out). Para una implementación eficiente con listas enlazadas, se requiere mantener punteros tanto a la cabeza (frente) como a la cola (final) de la lista.

typedef struct {
    nodo_t *frente;
    nodo_t *final;
} cola_t;

3.1: Implementación con Lista Enlazada

4: Estructuras de Datos Avanzadas (Opcional)

4.1: Árbol de Búsqueda Binaria (BST)

Un árbol binario de búsqueda es una estructura de datos basada en nodos donde cada nodo tiene un valor, un puntero a un sub-árbol izquierdo (con valores menores) y un puntero a un sub-árbol derecho (con valores mayores).

4.2: Tabla Hash (Encadenamiento Separado)

Una tabla hash utiliza una función para convertir una clave en un índice de un arreglo. Las colisiones (cuando dos claves mapean al mismo índice) se manejan almacenando los elementos en una lista enlazada en esa posición del arreglo.