You are on page 1of 28

Introducci on Clasicaci on de las listas enlazadas Operaciones en las listas enlazadas Ventajas y desventajas

Estructura de Datos
Clase 5: Listas Enlazadas.
Carlos Contreras Bolton
Universidad Andres Bello
Facultad de Ingeniera
27 de marzo de 2014
Carlos Contreras Bolton Estructura de Datos 1/28
Introducci on Clasicaci on de las listas enlazadas Operaciones en las listas enlazadas Ventajas y desventajas
Contenido
1 Introducci on
2 Clasicacion de las listas enlazadas
3 Operaciones en las listas enlazadas
4 Ventajas y desventajas
Carlos Contreras Bolton Estructura de Datos 2/28
Introducci on Clasicaci on de las listas enlazadas Operaciones en las listas enlazadas Ventajas y desventajas
Introduccion
Los arreglos son tpicamente las estructuras lineales
conocidas hasta el momento.
Los arreglos presentan dos grandes ventajas para el
almacenamiento de colecciones lineales de datos:
Acceso aleatorio: se puede acceder a cualquier posicion
del arreglo en tiempo constante.
Uso eciente de memoria cuando todas las posiciones
estan ocupadas: por guardarse en posiciones
consecutivas de memoria.
Carlos Contreras Bolton Estructura de Datos 3/28
Introducci on Clasicaci on de las listas enlazadas Operaciones en las listas enlazadas Ventajas y desventajas
Introduccion
En cuanto a las desventajas:
Problemas con el tama no. Debido a que se debe asignar
un tama no al crear el arreglo, y no se puede cambiar en
caso de usar arreglos estaticos.
En caso de usar arreglos dinamicos se debe redimensionar.
Da lugar a problemas:
Uso no eciente de memoria por tener que reservar
espacio para el caso peor.
Posibilidad de sobrepasar el tama no reservado en tiempo
de ejecucion.
Necesidad de memoria contigua:
Puede ocurrir que, pese a haber suciente memoria libre,
no haya un bloque contiguo sucientemente grande.
Carlos Contreras Bolton Estructura de Datos 4/28
Introducci on Clasicaci on de las listas enlazadas Operaciones en las listas enlazadas Ventajas y desventajas
Introduccion
Mas desventajas:
Ciertas operaciones tienen un coste no optimo:
Inserciones y eliminaciones de datos en la primera
posicion o posiciones intermedias: necesidad de desplazar
datos entre posiciones consecutivas.
Concatenacion de dos o mas arreglos: necesidad de
copiar los datos a un nuevo arreglos.
Particion de un arreglo en varios fragmentos: necesidad
de copiar datos a nuevos arreglos.
Carlos Contreras Bolton Estructura de Datos 5/28
Introducci on Clasicaci on de las listas enlazadas Operaciones en las listas enlazadas Ventajas y desventajas
Introduccion
Las listas enlazadas son estructuras de datos dinamicas.
Al contrario de las estructuras estaticas, en las que su
tama no en memoria se establece durante una compilaci on
y permanece inalterable durante la ejecucion del
programa.
Las estructuras de datos dinamicas crecen y se contraen a
medida que se ejecuta el programa.
Son una colecci on de elementos, denominados nodos,
dispuestos uno a continuacion de otro.
Cada uno de ellos conectado al siguiente elemento por un
enlace o puntero.
Las listas enlazadas son estructuras muy exibles y con
numerosas aplicaciones en el mundo de la programaci on.
Carlos Contreras Bolton Estructura de Datos 6/28
Introducci on Clasicaci on de las listas enlazadas Operaciones en las listas enlazadas Ventajas y desventajas
Fundamentos teoricos
La idea basica consiste en construir una lista cuyos
elementos llamados nodos se componen de dos partes o
campos:
La primera parte o campo contiene la informacion.
La segunda parte o campo es un puntero que apunta al
siguiente nodo de la lista.
La representacion mas extendida es aquella que utiliza un
rectangulo con dos secciones al interior, valor del dato y
el enlace. El ultimo nodo apunta NULL.
Carlos Contreras Bolton Estructura de Datos 7/28
Introducci on Clasicaci on de las listas enlazadas Operaciones en las listas enlazadas Ventajas y desventajas
Clasicacion de las listas enlazadas
Listas simplemente enlazadas: Cada nodo contienen un
unico enlace con el nodo siguiente.
Listas doblemente enlazadas: Cada nodo contienen dos
enlaces, uno con su predecesor y otro con su sucesor.
Listas circulares simplemente enlazadas: Es una lista
simplemente enlazada en la que el ultimo elemento se
enlaza al primer elemento.
Listas circulares doblemente enlazadas: Es una lista
doblemente enlazada en la que el ultimo elemento se
enlaza al primer elemento.
Carlos Contreras Bolton Estructura de Datos 8/28
Introducci on Clasicaci on de las listas enlazadas Operaciones en las listas enlazadas Ventajas y desventajas
Operaciones en listas enlazadas
Inicializacion o creacion, con declaracion de los nodos.
Insertar elementos en una lista.
Eliminar elementos de una lista.
Buscar elementos de una lista (comprobar la existencia de
elementos en una lista)
Recorrer una lista enlazada.
Comprobar si la lista enlazada esta vaca.
Carlos Contreras Bolton Estructura de Datos 9/28
Introducci on Clasicaci on de las listas enlazadas Operaciones en las listas enlazadas Ventajas y desventajas
Declaracion de una Lista
Informaci on del nodo
t y pe de f s t r u c t i n f o {
i n t dato1 ;
/ i n t dato2 ; /
/ . . . /
} I n f o ;
Nodo
t y pe de f s t r u c t nodo {
I n f o dat os ;
s t r u c t nodo s i g u i e n t e ;
}Nodo ;
Lista
t y pe de f s t r u c t l i s t a {
Nodo i n i c i o ;
Nodo f i n ;
i n t tamano ;
} L i s t a ;
Carlos Contreras Bolton Estructura de Datos 10/28
Introducci on Clasicaci on de las listas enlazadas Operaciones en las listas enlazadas Ventajas y desventajas
Declaracion de una Lista
Carlos Contreras Bolton Estructura de Datos 11/28
Introducci on Clasicaci on de las listas enlazadas Operaciones en las listas enlazadas Ventajas y desventajas
Insertar en una Lista vaca
1 Crear un nodo y hacer que su siguiente apunte a NULL.
2 Hacer que inicio y n apunten a nodo.
Carlos Contreras Bolton Estructura de Datos 12/28
Introducci on Clasicaci on de las listas enlazadas Operaciones en las listas enlazadas Ventajas y desventajas
Insertar en una lista no vaca
1 Crear un nodo y hacer que su siguiente apunte al inicio.
2 Hacer que inicio apunte al nodo.
Antes:
Despues:
Carlos Contreras Bolton Estructura de Datos 13/28
Introducci on Clasicaci on de las listas enlazadas Operaciones en las listas enlazadas Ventajas y desventajas
Eliminar un elemento
Suponiendo que se parte de una lista con uno o mas nodos,
considere un apuntador auxiliar nodo:
1 Hacer que nodo aux apunte al primer elemento de la lista,
es decir al inicio.
2 Asignar a inicio la direccion del segundo nodo de la lista;
es decir, el de su nodo siguiente.
3 Guardar el contenido del nodo para devolverlo como
retorno.
4 Liberar la memoria asignada al nodo, que es el que se
desea eliminar.
Carlos Contreras Bolton Estructura de Datos 14/28
Introducci on Clasicaci on de las listas enlazadas Operaciones en las listas enlazadas Ventajas y desventajas
Eliminar un elemento
Antes:
Despues:
Carlos Contreras Bolton Estructura de Datos 15/28
Introducci on Clasicaci on de las listas enlazadas Operaciones en las listas enlazadas Ventajas y desventajas
Implementacion
1 #i n c l u d e <s t d i o . h>
2 #i n c l u d e <s t d l i b . h>
3 #i n c l u d e <s t dbool . h>
4 /
5 Es t r uc t ur a que guar da l a i nf or mac i on .
6 /
7 t y pe de f s t r u c t i n f o {
8 i n t dato1 ;
9 / i n t dato2 ; /
10 / . . . /
11 }I n f o ;
12 /
13 Es t r uc t ur a que guar da e l nodo , un punt er o que apunta a l a I nf o ,
14 y ot r o que apunta a l nodo s i g u i e n t e
15 /
16 t y pe de f s t r u c t nodo {
17 I n f o dat os ;
18 s t r u c t nodo s i g u i e n t e ;
19 }Nodo ;
20 /
21 Es t r uc t ur a que guar da l a Li s t a , con un punt er o que apunta a l i n i c i o y a l
22 f i n de e s t a . Ademas , al macena e l tama no de l a l i s t a .
23 /
24 t y pe de f s t r u c t l i s t a {
25 Nodo i n i c i o ;
26 Nodo f i n ;
27 i n t tamano ;
28 }L i s t a ;
Carlos Contreras Bolton Estructura de Datos 16/28
Introducci on Clasicaci on de las listas enlazadas Operaciones en las listas enlazadas Ventajas y desventajas
Implementacion
1 #i n c l u d e l i s t a . h
2
3 /
4 Funci on que per mi t e c r e a r una nueva l i s t a v a c a .
5
6 @r et ur n nuevo : d i r e c c i o n de l nodo i n i c i o de l a l i s t a cr eada .
7
8 /
9
10 L i s t a c r e a L i s t a ( )
11 {
12 L i s t a nuevo ;
13
14 i f ( nuevo = ( L i s t a ) mal l oc ( s i z e o f ( L i s t a ) ) ) // Pi de memori a par a l a l i s t a
15 {
16 nuevo>tamano = 0; // L i s t a v a c a
17 nuevo>i n i c i o = nuevo>f i n = NULL; // I n i c i o y Fi n apuntan a NULL
18 }
19 r e t u r n nuevo ;
20 }
Carlos Contreras Bolton Estructura de Datos 17/28
Introducci on Clasicaci on de las listas enlazadas Operaciones en las listas enlazadas Ventajas y desventajas
Implementacion
1 /
2 Funci on que per mi t e e l i mi n a r una L i s t a .
3
4 @param p l i s t a : punt er o a l a l i s t a
5
6 /
7
8 voi d d e s t r u i r L i s t a ( L i s t a p l i s t a )
9 {
10 Nodo aux ;
11
12 whi l e ( p l i s t a >i n i c i o != NULL)
13 {
14 aux = p l i s t a >i n i c i o ;
15 p l i s t a >i n i c i o = p l i s t a >i n i c i o >s i g u i e n t e ;
16 f r e e ( aux>dat os ) ;
17 f r e e ( aux ) ;
18 }
19 f r e e ( p l i s t a ) ;
20 }
Carlos Contreras Bolton Estructura de Datos 18/28
Introducci on Clasicaci on de las listas enlazadas Operaciones en las listas enlazadas Ventajas y desventajas
Implementacion
1 /
2 Funci on que c r e a un nodo y l o i n i c i a l i z a con s us dat os y l a d i r e c c i o n de l
3 s i g u i e n t e nodo .
4
5 @param dat o : punt er o a l o s dat os
6 @param pt r o : punt er o a l s i g u i e n t e nodo
7 @r et ur n nuevo : l a d i r e c c i o n de l nuevo nodo cr eado .
8
9 /
10
11 Nodo cr ear Nodo ( I n f o dato , Nodo pt r o )
12 {
13 Nodo nuevo ;
14 i f ( nuevo = ( Nodo ) mal l oc ( s i z e o f ( Nodo) ) ) // Pi de memori a par a e l nodo
15 {
16 nuevo>dat os = dat o ;
17 nuevo>s i g u i e n t e = pt r o ;
18 }
19 r e t u r n nuevo ;
20 }
Carlos Contreras Bolton Estructura de Datos 19/28
Introducci on Clasicaci on de las listas enlazadas Operaciones en las listas enlazadas Ventajas y desventajas
Implementacion
1 /
2 Funci on que i n s e r t a un nodo a l comi enzo de l a l i s t a .
3
4 @param dat o : dat o que s e va guar dar en l a l i s t a
5
6 @r et ur n pdato : punt er o de I n f o .
7 /
8
9 I n f o agr e gar ( i n t dato1 )
10 {
11 I n f o pdato ;
12 i f ( pdato = ( I n f o ) mal l oc ( s i z e o f ( I n f o ) ) )
13 {
14 / Se al macena l a i nf or ma c i on en I n f o /
15 pdato>dato1 = dato1 ;
16 / pdato>dato2 = dato2 ; /
17 r e t u r n pdato ;
18 }
19 e l s e
20 {
21 p r i n t f ( pr obl emas en l a i n s e r c i o n \n ) ;
22 e x i t ( 0) ;
23 }
24 }
Carlos Contreras Bolton Estructura de Datos 20/28
Introducci on Clasicaci on de las listas enlazadas Operaciones en las listas enlazadas Ventajas y desventajas
Implementacion
1 /
2 Funci on que i n g r e s a l a i nf or ma c i on
3
4 @param p l i s t a : punt er o a l a L i s t a
5 @param i n f o : i nf or ma c i on a guar dar en l a l i s t a
6
7 @r et ur n t r ue : s i l a i n s e r c i o n t uvo e x i t o , f a l s e : en cas o c o n t r a r i o .
8 /
9
10 bool i n s e r t a r ( L i s t a p l i s t a , i n t i n f o )
11 {
12 Nodo aux ;
13 I n f o dat o = agr e gar ( i n f o ) ;
14 // Se c r e a un nodo con dat os y apunta a l s i g u i e n t e nodo
15 i f ( aux = cr ear Nodo ( dato , p l i s t a >i n i c i o ) ) //ademas , s e al macena en aux
16 {
17 p l i s t a >i n i c i o = aux ;
18 i f ( p l i s t a >tamano == 0)
19 p l i s t a >f i n = aux ;
20 p l i s t a >tamano++;
21 p r i n t f ( Se i n s e r t a % d\n , p l i s t a >i n i c i o >dat os>dato1 ) ;
22
23 r e t u r n t r ue ;
24 }
25 e l s e
26 r e t u r n f a l s e ;
27 }
Carlos Contreras Bolton Estructura de Datos 21/28
Introducci on Clasicaci on de las listas enlazadas Operaciones en las listas enlazadas Ventajas y desventajas
Implementacion
1 /
2 Funci on que e l i mi n a a l pr i mer nodo de l a l i s t a .
3
4 @param p l i s t a : punt er o a l a l i s t a .
5 @r et ur n dat o : r e t o r na e l dat o de I n f o o 1 en cas o que l a l i s t a e s t e v a c a .
6
7 /
8
9 i n t e l i mi n a r ( L i s t a p l i s t a )
10 {
11 i f ( p l i s t a >tamano != 0)
12 {
13 Nodo aux ;
14 i n t dat o ;
15 aux = p l i s t a >i n i c i o ; // s e guar da e l nodo a e l i mi n a r ( e l 1 er o ) en un aux
16 dat o = aux>dat os>dato1 ; // s us dat os tambi en
17 p l i s t a >i n i c i o = aux>s i g u i e n t e ;
18 p l i s t a >tamano;
19 i f ( p l i s t a >tamano == 0)
20 p l i s t a >f i n = 0;
21 f r e e ( aux>dat os ) ; f r e e ( aux ) ; // l i b e r a r I n f o y des pues nodo
22 r e t u r n dat o ;
23 }
24 e l s e
25 {
26 p r i n t f ( No s e puede e l i mi n a r l a l i s t a . Es ta v a c a . \n ) ;
27 r e t u r n 1;
28 }
29 }
Carlos Contreras Bolton Estructura de Datos 22/28
Introducci on Clasicaci on de las listas enlazadas Operaciones en las listas enlazadas Ventajas y desventajas
Implementacion
1 /
2 Funci on que r e c o r r e l a l i s t a y l a i mpr i me
3
4 @param p l i s t a : punt er o a l a l i s t a .
5
6 /
7
8 voi d r e c o r r e r ( L i s t a p l i s t a )
9 {
10 Nodo i ;
11 i = p l i s t a >i n i c i o ;
12 p r i n t f ( La l i s t a t i e n e = ) ;
13 whi l e ( i != NULL)
14 {
15 p r i n t f ( % d , i >dat os>dato1 ) ;
16 i = i >s i g u i e n t e ;
17 }
18 p r i n t f ( \n ) ;
19 }
Carlos Contreras Bolton Estructura de Datos 23/28
Introducci on Clasicaci on de las listas enlazadas Operaciones en las listas enlazadas Ventajas y desventajas
Implementacion
1 /
2 Funci on Pr i n c i p a l
3
4 /
5
6 i n t mai n ( i n t ar gc , char ar gv [ ] )
7 {
8 L i s t a L ;
9 L = c r e a L i s t a ( ) ;
10 i n s e r t a r ( L , 1) ;
11 i n s e r t a r ( L , 2) ;
12 i n s e r t a r ( L , 3) ;
13 r e c o r r e r ( L) ;
14 i n t e l i mi nado = e l i mi n a r ( L) ;
15 p r i n t f ( Se e l i mi n a % d\n , e l i mi nado ) ;
16 r e c o r r e r ( L) ;
17 d e s t r u i r L i s t a ( L) ;
18 / s e v ue l v e a c r e a r una nueva l i s t a /
19 L = c r e a L i s t a ( ) ;
20 i n s e r t a r ( L , 2) ;
21 i n s e r t a r ( L , 3) ;
22 r e c o r r e r ( L) ;
23 d e s t r u i r L i s t a ( L) ;
24 r e t u r n 0;
25 }
Carlos Contreras Bolton Estructura de Datos 24/28
Introducci on Clasicaci on de las listas enlazadas Operaciones en las listas enlazadas Ventajas y desventajas
Salida
Salida:
Se inserta 1
Se inserta 2
Se inserta 3
La lista tiene = 3 2 1
Se elimina 3
La lista tiene = 2 1
Se inserta 2
Se inserta 3
La lista tiene = 3 2
Carlos Contreras Bolton Estructura de Datos 25/28
Introducci on Clasicaci on de las listas enlazadas Operaciones en las listas enlazadas Ventajas y desventajas
Ventajas de las listas enlazadas
Inserci on y extraccion de nodos con coste independiente
del tama no de la lista.
Concatenaci on y partici on listas con coste independiente
del tama no de las listas.
No hay necesidad de grandes cantidades de memoria
contigua.
El uso de memoria se adapta dinamicamente al n umero
de datos almacenados en la lista en cada momento.
Carlos Contreras Bolton Estructura de Datos 26/28
Introducci on Clasicaci on de las listas enlazadas Operaciones en las listas enlazadas Ventajas y desventajas
Desventajas de las listas enlazadas
Acceso a posiciones intermedias con coste dependiente
del tama no de la lista.
Necesidad de memoria adicional para almacenar los nodos
con sus atributos.
Carlos Contreras Bolton Estructura de Datos 27/28
Introducci on Clasicaci on de las listas enlazadas Operaciones en las listas enlazadas Ventajas y desventajas
Eciencia
Operaciones
Arreglo Arreglo Lista
Estatico Dinamico Enlazada
Acceder O(1) O(1) O(n)
Buscar O(n) O(n) O(n)
Insertar O(n) O(1)
Eliminar O(n) O(1)
Carlos Contreras Bolton Estructura de Datos 28/28

You might also like