Laboratorio de memoria y punteros en C
Cola
Estructura FIFO para encolar y desencolar elementos.
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.
3 Ejecutar y visualizar
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)
Historial de ejecución
Estructura del TAD
struct NodoCola {
int nro;
struct NodoCola *sgte;
};
struct Cola {
struct NodoCola *delante;
struct NodoCola *atras;
};