Listas ligadas simples: eliminación y gestión de memoria

lunes 5 de octubre · 13:0014:15 · en 44 días

Guía del maestro.docx

GUÍA 05-10-26 Estructuras de Datos

CN122 · lunes 05/10/2026 · 13:00-14:15 · Sesión 16

Listas ligadas simples: eliminación y gestión de memoria


ELIMINAR UN NODO

1. Localizar el nodo objetivo y su anterior.

2. Si es la cabeza, cabeza = cabeza->sig.

3. Si no, anterior->sig = objetivo->sig.

4. free(objetivo).

El orden es obligatorio: primero se desenlaza, después se libera. Liberar antes deja el programa leyendo memoria ajena.

LOS TRES ERRORES DE MEMORIA

  • Fuga — perder la referencia sin liberar. La memoria queda ocupada hasta que el programa termina.
  • Doble liberación — llamar free dos veces sobre la misma dirección; corrompe el montículo.
  • Apuntador colgante — usar un apuntador después de liberarlo. El comportamiento es indefinido y a veces funciona, que es lo peor que puede pasar.

LIBERAR LA LISTA COMPLETA

Hay que guardar el siguiente antes de liberar el actual. Si haces free(p) y luego p = p->sig, estás leyendo memoria liberada.

  • while (p) { Nodo *sig = p->sig; free(p); p = sig; }

HERRAMIENTAS

valgrind detecta fugas, dobles liberaciones y lecturas fuera de rango. Correrlo sobre las prácticas de este tema es la mejor forma de aprender a confiar en tu código.

LA LISTA COMO ESTRUCTURA BASE

Una pila con lista nunca se llena y el push es siempre O(1). Una cola con lista y apuntador a cola tiene ambas operaciones en O(1) sin aritmética modular. Las estructuras de las semanas anteriores se reimplementan mejor ahora.

PRÁCTICA

Eliminar por valor y por posición, liberar la lista completa, y reimplementar pila y cola sobre lista ligada.

Mis notas0 palabras
.docx
Tareas propias de esta sesión

Nada anotado en esta sesión todavía.