Laboratorio de memoria y punteros en C

Sublista

Padres con sublistas de hijos.

Abrir guía de Sublista

1 Preparar

Los ejemplos usan las mismas operaciones públicas del TAD.

2 Predecir

Antes de ejecutar, identifica qué extremo, enlace o puntero debería cambiar y qué invariante debe conservarse.

Progreso conceptual de esta sesión: 0 predicciones.

3 Ejecutar y visualizar

5 Relacionar con C

Codigo C: Insertar padre

/**
 * @brief Inserta un nuevo nodo padre al final de la lista principal.
 * @param[in,out] lista       Doble puntero a la lista principal.
 * @param[in]     valor_padre Valor del nuevo padre.
 * @return Puntero al nuevo nodo insertado, o NULL si falla.
 */
Nodo *sublista_insertar_padre_final(Nodo **lista, int valor_padre) {
    Nodo *nuevo;
    Nodo *actual;

    if (lista == NULL) {
        return NULL;
    }

    nuevo = crear_padre(valor_padre);
    if (nuevo == NULL) {
        return NULL;
    }

    if (*lista == NULL) {
        *lista = nuevo;
        return nuevo;
    }

    actual = *lista;
    while (actual->sgte != NULL) {
        actual = actual->sgte;
    }
    actual->sgte = nuevo;
    return nuevo;
}

3 Controlar la ejecución

Actual: +0.00x (1.00x real)

Paso 0 · sin función · sin fase · sin concepto

Paso: 0/0

4 Comprender

Estructura jerarquica secuencial: cada nodo padre mantiene su propia sublista de hijos. En la animacion observa dos niveles de punteros (padres e hijos) y valida que cada operacion afecte solo la rama correspondiente sin corromper otras sublistas.

Frame actual: prepara una operación para observar concepto, cambio e invariante.

Condición y ciclo

Sin condición en este frame.

Variables C

Sin variables.

Punteros y enlaces

Sin cambios de punteros.

Heap y memoria

Sin objetos reservados.

Pila de llamadas

Sin llamadas.

5 Comparar conceptos

Selecciona una comparación para trabajar sobre dos copias independientes de la misma secuencia.

6 Reflexionar

Consola C (printf)

terminal

Historial de ejecución

    Estructura del TAD
    typedef struct Sublista {
        int nro;                
        struct Sublista *sgte;  
    } Sublista;
    
    typedef struct Nodo {
        int nro;              
        struct Nodo *sgte;    
        Sublista *sub;        
    } Nodo;