Laboratorio de memoria y punteros en C
Lista Enlazada
Acerca de esta estructura
Secuencia de nodos con operaciones por posición y valor.
1 Preparar
2 Visualizar y ejecutar
Código C: Insertar inicio
/**
* @brief Reserva e inserta un nodo al inicio de la cadena.
* @param[in,out] lista Dirección de la variable cabeza del llamador; *lista puede ser NULL.
* @param[in] valor Dato entero a insertar; se admiten valores repetidos.
* @post En éxito, la nueva cabeza contiene valor y enlaza con la cabeza anterior.
* @note Si lista es NULL no hace nada. Si malloc falla, conserva la cadena y escribe un diagnóstico en stdout.
*/
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
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.
4 Comprender
Referencia completa de la estructura
Secuencia lineal de nodos enlazados por referencias al siguiente. En el simulador debes seguir el avance de punteros auxiliares para inserciones/eliminaciones por posición, verificando que *lista (HEAD) siempre conserve la conectividad. Para limpiar, lista_limpiar desconecta la cabeza con q y la libera en cada vuelta.
Condición y ciclo
Variables C
Punteros y enlaces
Heap y memoria
Pila de llamadas
5 Comparar conceptos
Selecciona una comparación para trabajar sobre dos copias independientes de la misma secuencia.
5 Resultados de ejecución
Consola C (printf)
Seguimiento de operaciones
Estructura del TAD
typedef struct NodoLista {
int nro; /**< Dato entero almacenado. */
struct NodoLista *sgte; /**< Enlace al siguiente nodo. */
} *Tlista;