Listas Enlazadas - Web del Profesor

Anuncio
Universidad de Los Andes
Facultad de Ingeniería
Escuela de Sistemas
Listas Enlazadas
Prof. Gilberto Díaz
gilberto@ula.ve
Departamento de Computación, Escuela de Sistemas, Facultad de Ingeniería
Universidad de Los Andes, Mérida 5101 Venezuela
Programación Digital 3
Definición
Una lista enlazada es una colección de
elementos, denominados nodos.
Cadan nodo contiene dos componentes:
Enlace: contiene la dirección de memoria
que apunta al próximo elemento
Datos: es la información que se necesita
almacenar.
El orden de los nodos es determinado por la
dirección de memoria donde se almacenan
Depto Computación – Escuela de Sistemas – Universidad de Los Andes – Mérida – Venezuela - Gilberto Diaz
Listas Enlazadas
Cabecera
Enlace al primero
Dato
Enlace al próximo
10
10
33
12
12
88
Nodos
Depto Computación – Escuela de Sistemas – Universidad de Los Andes – Mérida – Venezuela - Gilberto Diaz
Operaciones
Las operaciones que se pueden realizar
en una lista enlazada son:
Agregar al final un dato
Agregar al principio un dato
Modificar un dato
Eliminar un dato
Depto Computación – Escuela de Sistemas – Universidad de Los Andes – Mérida – Venezuela - Gilberto Diaz
Agregar Elemento al Final
1)Si la lista está vacia
Apartar memoria para un nuevo nodo
Asignar valor al nodo
Apuntar la cabecera al nuevo nodo
2)Si no
Recorrer la lista hasta el final
Pedir memoria para un nuevo nodo
Asignar el valor al nodo
Apuntar el enlace del último nodo al nuevo
nodo
Depto Computación – Escuela de Sistemas – Universidad de Los Andes – Mérida – Venezuela - Gilberto Diaz
Agragar al final
Si la lista está vacia
10
10
Depto Computación – Escuela de Sistemas – Universidad de Los Andes – Mérida – Venezuela - Gilberto Diaz
Listas Enlazadas
Si la lista NO está vacia
88
10
10
12
12
33
Depto Computación – Escuela de Sistemas – Universidad de Los Andes – Mérida – Venezuela - Gilberto Diaz
Agregar Elemento al Principio
1)Solicitar memoria para un nuevo nodo
2)Asignar el valor al nuevo nodo
3)Asignar el enlace del nuevo nodo al primer
nodo
4)Apuntar la cabecera al nuevo nodo
Depto Computación – Escuela de Sistemas – Universidad de Los Andes – Mérida – Venezuela - Gilberto Diaz
Agregar Elemento al Principio
88
10
10
12
12
33
Depto Computación – Escuela de Sistemas – Universidad de Los Andes – Mérida – Venezuela - Gilberto Diaz
Eliminar Elemento
1)Si el elemento es el primero de la lista
Apuntar la cabecera al siguiente
Liberar el nodo
10
10
12
12
33
Depto Computación – Escuela de Sistemas – Universidad de Los Andes – Mérida – Venezuela - Gilberto Diaz
Eliminar Elemento
1)Si el elemento es el primero de la lista
Apuntar la cabecera al siguiente
Liberar el nodo
10
10
12
12
33
Depto Computación – Escuela de Sistemas – Universidad de Los Andes – Mérida – Venezuela - Gilberto Diaz
Eliminar Elemento
Si no
Buscar el elemento
Apuntar el anterior al siguiente y liberar el
nodo
10
10
12
12
33
55
Depto Computación – Escuela de Sistemas – Universidad de Los Andes – Mérida – Venezuela - Gilberto Diaz
Descargar