La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

LISTA DOBLEMENTE ENLAZADA

Presentaciones similares


Presentación del tema: "LISTA DOBLEMENTE ENLAZADA"— Transcripción de la presentación:

1 LISTA DOBLEMENTE ENLAZADA

2 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

3 Lista doblemente enlazada
51 99 izq. dato der. izq. dato der. izq. dato der. 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

4 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

5 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?

6 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.

7 Lista doblemente enlazada
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 9

8 Lista doblemente enlazada
Insertar nodo al inicio( La listaDE no está vacía) 9 1 9 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

9 Lista doblemente enlazada
Eliminar nodo al inicio 1 9 9 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)

10 Lista doblemente enlazada
Imprimir datos

11 Lista doblemente enlazada
Está una listaDE vacía? Cuando la lista está vacía el campo derecha de la cabecera es null

12 Lista doblemente enlazada
public class NodoDE { NodoDE izquierda; Object dato; NodoDE derecha; public NodoDE(Object o) izquierda = null; dato = o; derecha = null; }

13 Lista doblemente enlazada
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); }

14 Lista doblemente enlazada
public boolean esVacia( ) { if (cabecera.derecha==null) return true; else return false; } Está una lista circular vacía? Cuando la lista está vacía el campo derecha de la cabecera es null

15 Lista doblemente enlazada
public void insertarDE(Object o) { if (esVacia()){ NodoDE nuevo = new NodoDE(o); cabecera.derecha=nuevo; nuevo.izquierda=cabecera; nuevo.derecha=null; } 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

16 Lista doblemente enlazada
else{ NodoDE nuevo = new NodoDE(o); NodoDE primero=cabecera.derecha; nuevo.derecha=cabecera.derecha; nuevo.izquierda=cabecera; primero.izquierda=nuevo; cabecera.derecha=nuevo; } 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

17 Lista doblemente enlazada
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; } 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


Descargar ppt "LISTA DOBLEMENTE ENLAZADA"

Presentaciones similares


Anuncios Google