Professional Documents
Culture Documents
Lista
Estructura de Datos
Ingeniera de Informtica
TAD Lista
Nodos y enlaces
Estructura de
Listas - 2
Ejemplo
Lista de calificaciones ::= <Alumno> + {<Alumno>}
<Alumno>::= <<DNI>> + <<NIA>> + <Apellido1> +
<Apellido2> + <Nombre> + <Calificacin>
Estructura de
Listas - 3
Listas Arrays
Listas son flexibles y permiten cambio de
implementacin
Operaciones
Insertar, Borrar, Modificar, etc.
Tipos de listas
Simples
Ordenadas
Pilas
Colas
Doblemente enlazadas (LDE)
Circulares
Estructura de
Listas - 4
Implementaciones
Esttica
Dinmica
tamao = 3
max = 8
Secuencial
tamao = 4
max = 4
tamao = 3
elem[i] =
i=
min
+1
+2
...
...
...
elem[i] =
i=
T
8
posicin = i
max
posicin = i
Vector original
Vector ampliado
Enlazada
tamao = 5
tamao = 3
elem[i] =
i=
N 5
max
N
I
U
posicin
null
posicin = i
Estructura de
Listas - 5
Listas Simples
Definicin:
Estructura de
Listas - 6
crearLista (nombreLista)
listaVacia(nombreLista) Booleano
listaVacia(referenciaNodo) Booleano
listaLlena(nombreLista) Booleano
Insercin de nodos
Borrado de nodos
borrar(nombreLista, valorInfo)
Bsqueda de un nodo
Recorrido de la lista
recorrer(nombreLista)
info(referenciaNodo) Informacion
siguiente(referenciaNodo) enlace
asignarInfo(referenciaNodo, valorInformacion)
asignarEnlace(referenciaNodo, valorEnlace)
Estructura de
Listas - 7
Listas Simples
Ejemplo y pseudocdigo
insertar (nombreLista, valorInfo, posicin)
insertar (nombreLista, valorInfo)
borrar (nombreLista, valorInfo)
buscar (nombreLista, dato)
recorrer (nombreLista)
Insercin: casos
Estructura de
Listas - 8
Estructura de
Listas - 9
Estructura de
Listas - 10
Listas Ordenadas
Definicin
Estructura de
Listas - 11
crearLista (nombreLista)
listaVacia(nombreLista) Booleano
listaVacia(referenciaNodo) Booleano
listaLlena(nombreLista) Booleano
Insercin de nodos
Borrado de nodos
borrar(nombreLista, valorClave)
Bsqueda de un nodo
Recorrido de la lista
recorrer(nombreLista
clave(referenciaNodo) Clave
info(referenciaNodo) Informacion
siguiente(referenciaNodo) enlace
asignarClave(referenciaNodo, valorClave)
asignarInfo(referenciaNodo, valorInformacion)
asignarEnlace(referenciaNodo, valorEnlace)
Estructura de
Listas - 12
Pilas
Definicin
<pila> ::= <cabecera> + {<nodo>}
<cabecera> ::= <enlace>
<enlace> ::= (<<ReferenciaNodo>> | NULL)
<nodo> ::= <informacion> + <enlace>
<informacion> ::= <<dato>>{<<dato>>}
Estructura de
Listas - 13
crearPila (nombrePila)
pilaVacia(nombrePila) Booleano
pilaLlena(nombrePila) Booleano
Insercin de nodos
push(nombrePila, valorInfo)
Extraccin de nodos
pop(nombrePila) informacion
Acceso a la cabecera*
cabecera(nombrePila) informacion
info(referenciaNodo) Informacion
siguiente(referenciaNodo) Enlace
asignarInfo(referenciaNodo, valorInformacion)
asignarEnlace(referenciaNodo, valorEnlace)
Estructura de
Listas - 14
Estructura de
bar
PC = 1
m=6
foo
PC = 3
j=5
k=6
main
PC = 2
i=5
Listas - 15
Colas
Definicin
<cola> ::= <frente> + <final> + {<nodo>}
<frente> ::= <enlace>
<enlace> ::= (<<ReferenciaNodo>> | NULL)
<final> ::= <enlace>
<nodo> ::= <informacion> + <enlace>
< informacion > ::= <<dato>>{<<dato>>}
Estructura de
Listas - 16
crearCola (nombreCola)
colaVacia(nombreCola) Booleano
colaLlena(nombreCola) Booleano
Insercin de nodos
encolar(nombreCola, valorInfo)
Extraccin de nodos
desencolar(nombreCola) informacion
Acceso a la cabecera*
cabecera(nombreCola) informacion
info(referenciaNodo) Informacion
siguiente(referenciaNodo) Enlace
asignarInfo(referenciaNodo, valorInformacion)
asignarEnlace(referenciaNodo, valorEnlace)
Estructura de
Listas - 17
Colas circulares
Implementacin esttica como array
Referencia al primero y al ltimo
Aritmtica mdulo C (Capacidad de la cola)
Llevar la cuenta del nmero de elementos
Estructura de
Listas - 18
Colas de prioridad
Estructura de
Listas - 19
Listas de espera
Acceso a recursos compartidos dedicados (v.g.,
impresoras)
Multiprogramacin de la CPU
Estructura de
Listas - 20
Definicin:
Estructura de
Listas - 21
LDE: operaciones
Creacin de una lista
crearLista(nombreLista)
listaVacia(nombreLista) Booleano
listaVacia(referenciaNodo) Booleano
Insercin de nodos
listaLlena(nombreLista) Booleano
insertar(nombreLista, valorInfo, posicion)
insertar(nombreLista, valorInfo)
Borrado de nodos
borrar(nombreLista, valorInfo)
Bsqueda de un nodo
Recorrido de la lista
pertenece(nombreLista,informacion) Booleano
recorrer(nombreLista, sentido)
info(referenciaNodo) Informacion
anterior(referenciaNodo) enlace
Estructura de
siguiente(referenciaNodo) enlace
asignarInfo(referenciaNodo, valorInformacion)
asignarAnterior(referenciaNodo, valorEnlace)
asignarSiguiente(referenciaNodo, valorEnlace)
Listas - 22
Tcnicas de Simplificacin
Estructura de
Listas - 23
Estructura de
Listas - 24
Ejemplo e Implementacin
Estructura de
Listas - 25
Centinelas: ejemplos
Estructura de
Listas - 26
Estructura de
Listas - 27
Consecuencias:
No hace falta marcar comienzo
No hace falta caso especial cuando lista es vaca
Estructura de
Listas - 28
Cabeceras: ejemplos
insertarElemento (cabecera, 7)
insertarElemento (cabecera, 1)
Estructura de
Listas - 29
Cabecera + centinela
Estructura de
Listas - 30
Estructura de
Listas - 31