lista doblemente enlazada. lista doblemente enlazada definición una lista doblemente enlazada es...

17
LISTA DOBLEMENTE LISTA DOBLEMENTE ENLAZADA ENLAZADA

Upload: horacio-peraza

Post on 29-Jan-2016

218 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: LISTA DOBLEMENTE ENLAZADA. Lista doblemente enlazada Definición Una lista doblemente enlazada es una colección de elementos llamados nodosDE Un nodoDE

LISTA DOBLEMENTE LISTA DOBLEMENTE

ENLAZADAENLAZADA

Page 2: LISTA DOBLEMENTE ENLAZADA. Lista doblemente enlazada Definición Una lista doblemente enlazada es una colección de elementos llamados nodosDE Un nodoDE

Lista doblemente enlazada

Definición

Una lista doblemente enlazada es una colección de elementos llamados nodosDE

Un nodoDE tiene tres campos: un campo izquierda, un campo dato y un campo derecha. Los campos izquierda y derecha son apuntadores a los nodos ubicados en el lado izquierdo y el derecho de cada nodo

Page 3: LISTA DOBLEMENTE ENLAZADA. Lista doblemente enlazada Definición Una lista doblemente enlazada es una colección de elementos llamados nodosDE Un nodoDE

Lista doblemente enlazada

•Se mantiene un nodoDE cabecera, cuyo campo izquierda apunta a null, no tiene valor y cuyo campo derecha apunta al nodoDE que tiene el primer dato

•El campo derecha del ultimo nodoDE apunta a null

izq. dato der.

5511

9999

izq. dato der. izq. dato der.

Page 4: LISTA DOBLEMENTE ENLAZADA. Lista doblemente enlazada Definición Una lista doblemente enlazada es una colección de elementos llamados nodosDE Un nodoDE

Lista doblemente enlazada

Definición

Una lista doblemente enlazada es una estructura de datos dinámica que permite almacenar cualquier cantidad de nodos.

Tiene la ventaja de que estando en cualquier nodo se puede acceder al nodo que está tanto a la izquierda como a la derecha

Page 5: LISTA DOBLEMENTE ENLAZADA. Lista doblemente enlazada Definición Una lista doblemente enlazada es una colección de elementos llamados nodosDE Un nodoDE

Lista doblemente enlazada

Definición

Las operaciones sobre una lista doblemente enlazada son:

•Crear listaDE•Insertar nodo al inicio•Eliminar nodo al inicio•Imprimir datos•Es una listaDE vacía?

Page 6: LISTA DOBLEMENTE ENLAZADA. Lista doblemente enlazada Definición Una lista doblemente enlazada es una colección de elementos llamados nodosDE Un nodoDE

Lista doblemente enlazada

•Crear lista doblemente enlazada

Al crear una listaDE, se crea el nodo cabecera.

El nodo cabecera tiene como dato, izquierda y derecha a null.

Page 7: LISTA DOBLEMENTE ENLAZADA. Lista doblemente enlazada Definición Una lista doblemente enlazada es una colección de elementos llamados nodosDE Un nodoDE

•Insertar nodo al inicio( La listaDE está vacía)

•Se crea un nuevo nodoDE con el dato que se desee colocar, campo izquierda apuntado al nodo cabecera y campo derecha apuntando a null

•El campo derecha del nodo cabecera pasa de ser null a ser el nodo que estamos insertado

99

Lista doblemente enlazada

Page 8: LISTA DOBLEMENTE ENLAZADA. Lista doblemente enlazada Definición Una lista doblemente enlazada es una colección de elementos llamados nodosDE Un nodoDE

•Insertar nodo al inicio( La listaDE no está vacía)

•Se crea un nuevo nodo con el dato que se desee colocar, campo izquierda apuntando al nodo cabecera y campo derecha apuntado al nodo que apunta el campo derecha del nodo cabecera

•Al campo izquierda del nodo apuntado por derecha del nodo cabecera se le asigna el nodo que estamos insertando

•Al nodo cabecera se le asigna como derecha al nodo que estamos insertando

99

11 99

Lista doblemente enlazada

Page 9: LISTA DOBLEMENTE ENLAZADA. Lista doblemente enlazada Definición Una lista doblemente enlazada es una colección de elementos llamados nodosDE Un nodoDE

•Eliminar nodo al inicio

•Al nodo cabecera se le asigna como derecha, la derecha del primer nodo

•Al campo izquierda del segundo nodo se le asigna como izquierda el nodo cabecera (Solo si hay más de un nodo)

11 99

99

Lista doblemente enlazada

Page 10: LISTA DOBLEMENTE ENLAZADA. Lista doblemente enlazada Definición Una lista doblemente enlazada es una colección de elementos llamados nodosDE Un nodoDE

•Imprimir datos

Lista doblemente enlazada

Page 11: LISTA DOBLEMENTE ENLAZADA. Lista doblemente enlazada Definición Una lista doblemente enlazada es una colección de elementos llamados nodosDE Un nodoDE

•Está una listaDE vacía?

Cuando la lista está vacía el campo derecha de la cabecera es null

Lista doblemente enlazada

Page 12: LISTA DOBLEMENTE ENLAZADA. Lista doblemente enlazada Definición Una lista doblemente enlazada es una colección de elementos llamados nodosDE Un nodoDE

public class NodoDE{ NodoDE izquierda; Object dato; NodoDE derecha;

public NodoDE(Object o) { izquierda = null; dato = o; derecha = null; }

Lista doblemente enlazada

Page 13: LISTA DOBLEMENTE ENLAZADA. Lista doblemente enlazada Definición Una lista doblemente enlazada es una colección de elementos llamados nodosDE Un nodoDE

Crear listaDE

•Al crear una listaDE, se crea el nodo cabecera.

•El nodo cabecera tiene como dato, izquierda y derecha a null.

class ListaC{

Nodo cabecera;

ListaC() { cabecera=new Nodo(null); }

Lista doblemente enlazada

Page 14: LISTA DOBLEMENTE ENLAZADA. Lista doblemente enlazada Definición Una lista doblemente enlazada es una colección de elementos llamados nodosDE Un nodoDE

•Está una lista circular vacía?

Cuando la lista está vacía el campo derecha de la cabecera es null

public boolean esVacia( ) { if (cabecera.derecha==null) return true; else return false; }

Lista doblemente enlazada

Page 15: LISTA DOBLEMENTE ENLAZADA. Lista doblemente enlazada Definición Una lista doblemente enlazada es una colección de elementos llamados nodosDE Un nodoDE

Insertar nodo al inicio( La listaDE está vacía)

•Se crea un nuevo nodoDE con el dato que se desee colocar, campo izquierda apuntado al nodo cabecera y campo derecha apuntando a null•El campo derecha del nodo cabecera pasa de ser null a ser el nodo que estamos insertado

public void insertarDE(Object o) { if (esVacia()){ NodoDE nuevo = new NodoDE(o); cabecera.derecha=nuevo; nuevo.izquierda=cabecera; nuevo.derecha=null; }

Lista doblemente enlazada

Page 16: LISTA DOBLEMENTE ENLAZADA. Lista doblemente enlazada Definición Una lista doblemente enlazada es una colección de elementos llamados nodosDE Un nodoDE

Insertar nodo al inicio( La listaDE no está vacía)

•Se crea un nuevo nodo con el dato que se desee colocar, campo izquierda apuntando al nodo cabecera y campo derecha apuntado al nodo que apunta el campo derecha del nodo cabecera

•Al campo izquierda del nodo apuntado por derecha del nodo cabecera se le asigna el nodo que estamos insertando

•Al nodo cabecera se le asigna como derecha al nodo que estamos insertando

else{ NodoDE nuevo = new NodoDE(o); NodoDE primero=cabecera.derecha; nuevo.derecha=cabecera.derecha; nuevo.izquierda=cabecera; primero.izquierda=nuevo; cabecera.derecha=nuevo; } }

Lista doblemente enlazada

Page 17: LISTA DOBLEMENTE ENLAZADA. Lista doblemente enlazada Definición Una lista doblemente enlazada es una colección de elementos llamados nodosDE Un nodoDE

Eliminar nodo al inicio

•Al nodo cabecera se le asigna como derecha, la derecha del primer nodo

•Al campo izquierda del segundo nodo se le asigna como izquierda el nodo cabecera

public void eliminarDE() { NodoDE eliminar=cabecera.derecha; NodoDE derechaEliminar=eliminar.derecha;

if(esVacia()) System.out.println("LA LISTADE ESTA VACIA"); else{ cabecera.derecha=eliminar.derecha; derechaEliminar.izquierda=cabecera; }

}

Lista doblemente enlazada