Laboratorio de memoria y punteros en C

Cola

Acerca de esta estructura

Estructura FIFO para encolar y desencolar elementos.

Abrir guía de Cola

1 Preparar

2 Visualizar y ejecutar

3 Relacionar con código

Código 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

Ejecutar operación inicia una nueva operación. Activa Paso a paso antes de ejecutarla; navegar y cerrar el modo no repiten la operación.

Actual: +0.00x (1.00x real)

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

Paso: 0/0

2 Predecir

Activa preguntas, elige Paso a paso y prepara una operación. En las decisiones importantes podrás responder antes de ver el cambio.

Progreso conceptual de esta sesión: 0 predicciones.

4 Comprender

Referencia completa de la estructura

Estructura FIFO (First In, First Out): el primer nodo en entrar queda al frente y sale primero. En la animación revisa las reasignaciones de frente/atrás y verifica que al quedar vacía 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.

5 Resultados de ejecución

Ver y copiar main.c

Consola C (printf)

terminal

Seguimiento de operaciones

    Estructura del TAD

    struct NodoCola {
        int nro; /**< Dato entero almacenado. */
        struct NodoCola *sgte; /**< Enlace al siguiente nodo. */
    };
    
    struct Cola {
        struct NodoCola *delante; /**< Primer nodo de la cola. */
        struct NodoCola *atras; /**< Último nodo de la cola. */
    };