Estructuras de datos y algoritmos Oscar Bedoya oscarbedeisc

Estructuras de datos y algoritmos Oscar Bedoya. oscarbed@eisc. univalle. edu. co http: //eisc. univalle. edu. co/~oscarbed/Estructuras/ Edificio 331, 2º piso, E. I. S. C.

Listas enlazadas Definición Una lista enlazada también recibe el nombre de "lista concatenada", "lista eslabonada" o "lista lineal". Una lista enlazada es una colección de elementos llamados nodos. Cada nodo contiene un dato y una referencia al siguiente nodo.

Listas enlazadas dato siguiente 23 dato siguiente 99 Cada nodo se representa por medio de dos campos: Campo dato: contiene el valor del nodo Campo siguiente: indica cuál es el nodo con el que se enlaza

Listas enlazadas Lista enlazada con 3 nodos. Los nodos tienen datos de tipo entero. 23 6 99 Nodo 1 Nodo 2 Nodo 3 Dato: 23 Dato: 6 Dato: 99 Siguiente: Nodo 2 Siguiente: Nodo 3 Siguiente: null (indica que es el fin de la lista)

Listas enlazadas Lista enlazada con 3 nodos. Los nodos tienen datos de tipo String. oscar kate sarah Nodo 1 Nodo 2 Nodo 3 Dato: oscar Dato: kate Dato: sarah Siguiente: Nodo 2 Siguiente: Nodo 3 Siguiente: null

Listas enlazadas Definición Una lista enlazada es una estructura de datos dinámica que permite almacenar cualquier cantidad de nodos Las operaciones sobre una lista enlazada son: • Crear lista • Insertar nodo al inicio • Eliminar nodo al inicio • Imprimir datos • Es una lista vacía?

Listas enlazadas Definición E A Al primer nodo se le llama cabecera y sirve como punto de referencia en la lista. No contiene ningún dato R E

Listas enlazadas • Crear lista Al crear una lista, se crea el nodo cabecera. El nodo cabecera tiene como dato null y como siguiente null.

Listas enlazadas • Insertar nodo al inicio( La lista está vacía) • Se crea un nuevo nodo con el dato que se desee colocar y con siguiente null W • El campo siguiente del nodo cabecera pasa de ser null a ser el nodo que estamos insertado

Listas enlazadas • Insertar nodo al inicio( La lista no está vacía) W A W • Se crea un nuevo nodo con el dato que se desee colocar y en su campo siguiente se establece el siguiente del nodo cabecera • Al nodo cabecera se le asigna como siguiente el nodo que estamos insertando

Listas enlazadas • Eliminar nodo al inicio A W W • Al nodo cabecera se le asigna como siguiente, el siguiente del primer nodo

Listas enlazadas • Imprimir datos

Listas enlazadas • Está una lista vacía? Cuando la lista está vacía el campo siguiente de la cabecera es null

Listas enlazadas class Nodo{ Object dato; Nodo siguiente; { Nodo(Object o) Campo dato: contiene el valor dato=o; siguiente=null; Campo siguiente: indica cuál es } } Cada nodo se representa por medio de dos campos: Nodo(Object o, Nodo n) { dato=o; siguiente=n; } del nodo con el que se enlaza

Listas enlazadas class Lista{ Nodo cabecera; Lista() { cabecera=new Nodo(null); }. . . } Crear lista Al crear una lista, se crea el nodo cabecera. El nodo cabecera tiene como dato null y como siguiente null.

Listas enlazadas public boolean esta. Vacia(){ • Está una lista vacía? if (cabecera. siguiente==null) { return true; } else { return false; } } Cuando la lista está vacía el campo siguiente de la cabecera es null

Listas enlazadas void insertar(Object o) { Insertar nodo al inicio ( La lista está vacía) Nodo nuevo=new Nodo(null); if ( esta. Vacia() ) { nuevo=new Nodo(o); nuevo. siguiente=null; cabecera. siguiente=nuevo; } • Se crea un nuevo nodo con el dato que se desee colocar y con siguiente null • El campo siguiente del nodo cabecera pasa de ser null a ser el nodo que estamos insertado

Listas enlazadas if ( esta. Vacia() ) { nuevo=new Nodo(o); nuevo. siguiente=null; cabecera. siguiente=nuevo; } { nuevo=new Nodo(o); nuevo. siguiente=cabecera. siguiente; cabecera. siguiente=nuevo; } • Se crea un nuevo nodo con el dato que se desee colocar y en su campo siguiente se establece el siguiente del nodo cabecera • Al nodo cabecera se le asigna como siguiente el nodo que estamos insertando else } Insertar nodo al inicio ( La lista no está vacía)

Listas enlazadas public void eliminar() { Nodo borrar=cabecera. siguiente; cabecera. siguiente=borrar. siguiente; } Eliminar nodo al inicio • Al nodo cabecera se le asigna como siguiente, el siguiente del primer nodo

Listas enlazadas public void imprimir() { Nodo actual=new Nodo(null); if (esta. Vacia()) System. out. println(“La lista esta vacia"); else { actual=cabecera; System. out. println("n"); while( actual != null){ System. out. print( actual. dato ); actual=actual. siguiente; } } } • Imprimir datos

Listas enlazadas
- Slides: 21