RE:lista en c
Publicado por
Jesus Oliver (1 intervención) el 14/12/2006 11:49:34
Vamos hombre, dile algo al publico :-)
Recursividad con listas :
Creacion lista = null
esVacia (lista) : booleano
devolver lista=null
Dato(lista) : dato
devolver lista.dato
proc buscar (lista,elemento) : Algo (depende, puedes quere solo saber si esta, la posicion, algun otro valor porque sea un registro, etc...)
si no esVacia(lista)
si Dato(lista)==elemento
devolver algo
sino
buscar(lista.siguiente, algo)
fin proc
proc insertar(lista, dato)
depende de donde, si la lista es ordenada deberas buscar la posicion anterior y enlazar para esto es muy util usar un anillo o una lista con enlace a siguiente o anterior,
si es una pila sera al principio, no es necesaria recursion,
si es una cola al final, recorres hasta que el siguiente sea null y creas ahi ( si esVacia(lista.siguiente) insertar)
proc eliminar(lista, dato)
igual que el anterior, pero debes mantener las referencias para el anterior y el siguiente de forma obligatoria, es como insertar en ordenado pero al reves.
estos son los basicos. Consejo ante problemas de recursividad : busca el caso base!
la recursividad se aplica SOLO cuando se reduce el proceso hasta llegar a un caso (o varios) en el que sabemos como actuar.
Saludos!