LISTA DOBLEMENTE ENLAZADA Lista doblemente enlazada Definicin Una
LISTA DOBLEMENTE ENLAZADA
Lista doblemente enlazada Definición Una lista doblemente enlazada es una colección de elementos llamados nodos. DE Un nodo. DE 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
Lista doblemente enlazada 51 izq. dato der. 99 izq. dato der. • Se mantiene un nodo. DE cabecera, cuyo campo izquierda apunta a null, no tiene valor y cuyo campo derecha apunta al nodo. DE que tiene el primer dato • El campo derecha del ultimo nodo. DE apunta a null
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
Lista doblemente enlazada Definición Las operaciones sobre una lista doblemente enlazada son: • Crear lista. DE • Insertar nodo al inicio • Eliminar nodo al inicio • Imprimir datos • Es una lista. DE vacía?
Lista doblemente enlazada • Crear lista doblemente enlazada Al crear una lista. DE, se crea el nodo cabecera. El nodo cabecera tiene como dato, izquierda y derecha a null.
Lista doblemente enlazada • Insertar nodo al inicio( La lista. DE está vacía) • Se crea un nuevo nodo. DE con el dato que se desee colocar, campo izquierda apuntado al nodo cabecera y campo derecha apuntando a null 9 • El campo derecha del nodo cabecera pasa de ser null a ser el nodo que estamos insertado
Lista doblemente enlazada • Insertar nodo al inicio( La lista. DE 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
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)
Lista doblemente enlazada • Imprimir datos
Lista doblemente enlazada • Está una lista. DE vacía? Cuando la lista está vacía el campo derecha de la cabecera es null
Lista doblemente enlazada public class Nodo. DE { Nodo. DE izquierda; Object dato; Nodo. DE derecha; public Nodo. DE(Object o) { izquierda = null; dato = o; derecha = null; }
Lista doblemente enlazada class Lista. C{ Nodo cabecera; Lista. C() { cabecera=new Nodo(null); } Crear lista. DE • Al crear una lista. DE, se crea el nodo cabecera. • El nodo cabecera tiene como dato, izquierda y derecha a null.
Lista doblemente enlazada public boolean es. Vacia( ) { 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
Lista doblemente enlazada public void insertar. DE(Object o) { if (es. Vacia()){ Nodo. DE nuevo = new Nodo. DE(o); cabecera. derecha=nuevo; nuevo. izquierda=cabecera; nuevo. derecha=null; } Insertar nodo al inicio ( La lista. DE está vacía) • Se crea un nuevo nodo. DE 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
Lista doblemente enlazada else{ Nodo. DE nuevo = new Nodo. DE(o); Nodo. DE primero=cabecera. derecha; } } nuevo. derecha=cabecera. derecha; nuevo. izquierda=cabecera; primero. izquierda=nuevo; cabecera. derecha=nuevo; Insertar nodo al inicio ( La lista. DE 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
Lista doblemente enlazada public void eliminar. DE() { Nodo. DE eliminar=cabecera. derecha; Nodo. DE derecha. Eliminar=eliminar. derecha; if(es. Vacia()) System. out. println("LA LISTADE ESTA VACIA"); else{ cabecera. derecha=eliminar. derecha; derecha. Eliminar. 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
- Slides: 17