Laboratorio de memoria y punteros en C

Lista Enlazada

Secuencia de nodos con operaciones por posición y valor.

Abrir guía de Lista Enlazada

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 inicio

/**
 * @brief Inserta un nuevo nodo al inicio de la lista.
 * @param lista Puntero a la lista.
 * @param valor Valor entero a insertar.
 */
void lista_insertar_inicio(Tlista *lista, int valor) {
    if (lista == NULL) {
        return;
    }

    Tlista q = CrearNodoLista(valor);
    if (q == NULL) {
        return;
    }

    q->sgte = *lista;
    *lista = q;
}

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

Secuencia lineal de nodos enlazados por referencias al siguiente. En el simulador debes seguir el avance de punteros auxiliares para inserciones/eliminaciones por posicion, verificando que el HEAD siempre conserve la conectividad de la lista.

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 NodoLista {
        int nro;                    
        struct NodoLista *sgte;     
    } *Tlista;