Está en la página 1de 14

LISTAS

Definicin
Una lista es una coleccin homognea de
elementos con una relacin lineal entre ellos.
Es decir, cada elemento de la lista (excepto el
primero) tiene un nico elemento predecesor
y cada elemento (excepto el ltimo) tienen un
elemento sucesor
Es una estructura homognea, dinmica y de
acceso por posicin.
El tipo lista no existe en C por lo que
habr que implementarlo como un TAD
Laboratorio DEI
2003/04
Estructura de Datos Listas - 3
Posibles implementaciones
U N G
i = min +1 +2 ... ... ... max
posicin = i
elem[i] =
tamao = 3
i = 1 2 3 4 5 max
posicin = i
elem[i] =
tamao = 3
G 4 N 5 U 0
I U N G
i = 1 2 3 4 5 6 7 8
posicin = i
elem[i] =
tamao = 4
max = 4
T O N S
tamao = 3
max = 8
Vector original
Vector ampliado
G
I
U
N
S null
posicin
tamao = 5
Esttica Dinmica

E
n
l
a
z
a
d
a

S
e
c
u
e
n
c
i
a
l

Tipos de Listas
Simples
Ordenadas
Pilas
Colas
Doblemente enlazadas (LDE)
Circulares
Multilistas

Listas Simples
Coleccin de elementos homogneos cuya
relacin lineal es determinada por la posicin
del elemento en la lista
Comienzo + Enlace al siguiente ( puntero)

4 78 x
Lista Valores
Laboratorio DEI
2003/04
Estructura de Datos Listas - 6
Operaciones
asignarInfo(referenciaNodo, valorInformacion)
asignarEnlace(referenciaNodo, valorEnlace)

Modificacin de los nodos
info(referenciaNodo) Informacion
siguiente(referenciaNodo) enlace
Acceso a los nodos
recorrer(nombreLista
Recorrido de la lista
buscar(nombreLista, dato) informacion
buscar(nombreLista, dato) referenciaNodo
pertenece(nombreLista,informacion) Booleano
borrar(nombreLista, valorInfo)
Borrado de nodos
insertar(nombreLista, valorInfo, posicion)
insertar(nombreLista, valorInfo)
listaVacia(nombreLista) Booleano
listaVacia(referenciaNodo) Booleano
listaLlena(nombreLista) Booleano
Comprobacin del estado
crearLista (nombreLista)
Creacin de una lista
Insercin de nodos
Bsqueda de un nodo
Laboratorio DEI
2003/04
Estructura de Datos Listas - 7
Listas Ordenadas
La posicin de cada nodo viene determinada por el valor de uno o ms
campos obligatorios de informacin del nodo denominados clave
No se permite tener dos nodos con la misma clave



Laboratorio DEI
2003/04
Estructura de Datos Listas - 8
TAD Lista Ordenada: operaciones
asignarClave(referenciaNodo, valorClave)
asignarInfo(referenciaNodo, valorInformacion)
asignarEnlace(referenciaNodo, valorEnlace)

Modificacin de los nodos
clave(referenciaNodo) Clave
info(referenciaNodo) Informacion
siguiente(referenciaNodo) enlace
Acceso a los nodos
recorrer(nombreLista
Recorrido de la lista
buscar(nombreLista, valorClave) Informacion
buscar(nombreLista, valorClave)ReferenciaNodo
pertenece(nombreLista,valorClave) Booleano
borrar(nombreLista, valorClave) Borrado de nodos
insertar(nombreLista, valorClave, valorInfo)
listaVacia(nombreLista) Booleano
listaVacia(referenciaNodo) Booleano
listaLlena(nombreLista) Booleano
Comprobacin del estado
crearLista (nombreLista)
Creacin de una lista
Insercin de nodos
Bsqueda de un nodo
Laboratorio DEI
2003/04
Estructura de Datos Listas - 9
Tcnicas de Simplificacin
Algunos elementos (principio y final) se tratan
como casos especiales al implementar las
operaciones
Rediseo de estructuras para que los elementos
terminales se traten igual que el resto
Estructuras auxiliares
Centinelas
Cabeceras
A B C D

Laboratorio DEI
2003/04
Estructura de Datos Listas - 10
Centinelas: ejemplos
Buscar(comienzo, 15, centinela, posicin)
Buscar(comienzo, 50, centinela, posicin)
Laboratorio DEI
2003/04
Estructura de Datos Listas - 11
Cabecera en listas ordenadas
Cabecera = nodo auxiliar situado al principio
de la lista, cuyos contenidos (clave e info) no
pertenecen a la lista


Consecuencias:
No hace falta marcar comienzo
No hace falta caso especial cuando lista es vaca

Laboratorio DEI
2003/04
Estructura de Datos Listas - 12
Cabeceras: ejemplos
insertarElemento (cabecera, 7)



insertarElemento (cabecera, 1)
Laboratorio DEI
2003/04
Estructura de Datos Listas - 13
Cabecera + centinela
Usar el mismo nodo auxiliar como cabecera y
centinela
Convertir la lista en circular
Laboratorio DEI
2003/04
Estructura de Datos Listas - 14
Otras tcnicas de simplificacin
Insercin ordenada sin puntero al anterior
Buscar posicin del primer elemento mayor que la clave a insertar, colocar un
nodo nuevo detrs e intercambiar





Borrado sin puntero al anterior
Buscar posicin del elemento a borrar
Copiar informacin del siguiente a esa posicin
Borrar el siguiente
(no funciona para borrar el ltimo elemento hay que usar centinela)