Laboratorio de memoria y punteros en C

Cola

Estructura FIFO para encolar y desencolar elementos.

Abrir guía de Cola

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: Encolar

void cola_encolar(struct Cola *q, int valor) {
    if (q == NULL) {
        printf("Error: cola no inicializada.\n");
        return;
    }

    struct NodoCola *aux = (struct NodoCola *) malloc(sizeof(struct NodoCola));
    if (aux == NULL) {
        printf("Error: no se pudo asignar memoria.\n");
        return;
    }

    aux->nro = valor;
    aux->sgte = NULL;

    if (q->delante == NULL) {
        q->delante = aux;  // Primer elemento encolado
    } else {
        q->atras->sgte = aux;
    }
    q->atras = aux;  // Siempre apunta al último
}

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 FIFO (First In, First Out): el primer nodo en entrar queda al frente y sale primero. En la animacion revisa las reasignaciones de frente/atras y verifica que al quedar vacia ambos extremos vuelvan al estado nulo.

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
    struct NodoCola {
        int nro;                     
        struct NodoCola *sgte;       
    };
    
    struct Cola {
        struct NodoCola *delante;    
        struct NodoCola *atras;      
    };