Laboratorio de memoria y punteros en C
Pila
Acerca de esta estructura
Estructura LIFO para apilar y desapilar elementos.
1 Preparar
2 Visualizar y ejecutar
Código C: Apilar
/**
* @brief Reserva un nodo y lo publica como nueva cima.
* @param[in,out] p Direccion prestada de la cabeza; NULL se diagnostica sin escritura.
* @param[in] valor Entero a almacenar, incluido -1.
* @pre Si p no es NULL, *p es NULL o una lista propia valida, viva y aciclica.
* @note Fallo malloc imprime diagnostico y conserva *p. Retorno void no comunica exito.
* @note El nodo nuevo pertenece a la pila; destruir o desapilar lo libera. No inicializa una cabeza indeterminada.
*/
void pila_apilar(ptrPila *p, int valor) {
if (p == NULL) {
printf("Error: pila no inicializada.\n");
return;
}
ptrPila aux = (ptrPila) malloc(sizeof(struct NodoPila));
if (aux == NULL) {
printf("Error: No se pudo asignar memoria.\n");
return;
}
aux->nro = valor;
aux->sgte = *p;
*p = aux;
}Controles de 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
4 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
Estructura LIFO (Last In, First Out): el último nodo en entrar queda en el TOPE y es el primero en salir. En la simulación observa cómo se crea el nodo auxiliar, se enlaza al tope actual y luego se reasigna el puntero principal de la pila.
Condición y ciclo
Variables C
Punteros y enlaces
Heap y memoria
Pila de llamadas
6 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 NodoPila {
int nro; /**< Dato entero almacenado. */
struct NodoPila *sgte; /**< Enlace al siguiente nodo. */
} *ptrPila;