En este proyecto construimos una lista simplemente enlazada en Python con operaciones de inserción, eliminación, búsqueda, recorrido y limpieza. El código está listo para ejecutarse en el editor online.
# lista_completa.py
class Nodo:
def __init__(self, valor):
self.valor = valor
self.sig = None
class Lista:
def __init__(self):
self.cabeza = None
def insertar_inicio(self, valor):
nuevo = Nodo(valor)
nuevo.sig = self.cabeza
self.cabeza = nuevo
def insertar_final(self, valor):
nuevo = Nodo(valor)
if self.cabeza is None:
self.cabeza = nuevo
return
reco = self.cabeza
while reco.sig:
reco = reco.sig
reco.sig = nuevo
def eliminar_valor(self, valor):
if self.cabeza is None:
return False
if self.cabeza.valor == valor:
victima = self.cabeza
self.cabeza = victima.sig
victima.sig = None
return True
reco = self.cabeza
while reco.sig and reco.sig.valor != valor:
reco = reco.sig
if reco.sig is None:
return False
victima = reco.sig
reco.sig = victima.sig
victima.sig = None
return True
def buscar(self, valor):
reco = self.cabeza
while reco:
if reco.valor == valor:
return reco
reco = reco.sig
return None
def imprimir(self):
reco = self.cabeza
while reco:
print(reco.valor, end=" -> ")
reco = reco.sig
print("None")
def limpiar(self):
while self.cabeza:
siguiente = self.cabeza.sig
self.cabeza.sig = None
self.cabeza = siguiente
def main():
lista = Lista()
lista.insertar_inicio(10)
lista.insertar_final(20)
lista.insertar_final(30)
lista.imprimir()
nodo = lista.buscar(20)
if nodo:
print(f"Encontrado: {nodo.valor}")
lista.eliminar_valor(10)
lista.imprimir()
lista.limpiar()
if __name__ == "__main__":
main()
Ejecuta el proyecto completo, modifica valores y observa cómo cambian los enlaces en cada operación.