grupo 4 algoritmos y estructuras de datos listas doblemente enlazadas

Download Grupo 4 Algoritmos y Estructuras de datos Listas Doblemente enlazadas

Post on 03-Feb-2016

237 views

Category:

Documents

5 download

Embed Size (px)

TRANSCRIPT

  • Grupo 4Algoritmos y Estructuras de datos

    Listas Doblemente enlazadas

  • Lista circular

    DefinicinUna lista circular es una coleccin de elementos llamados nodos, organizados de tal manera que el siguiente del ultimo nodo apunta al nodo cabecera

  • Lista circular

    El campo siguiente del ultimo nodo, aquel cuyo dato es 51, apunta al nodo cabeceradato siguiente dato siguiente dato siguiente

  • Lista circular

    DefinicinUna lista circular es una estructura de datos dinmica que permite almacenar cualquier cantidad de nodos.

    Tiene la ventaja de que procesos de bsqueda o de manipulacin de los datos que requieran recorrer la lista completa ms de una vez se realizan eficientemente

  • Lista circular

    Definicin

    Las operaciones sobre una lista enlazada son:

    Crear lista circularInsertar nodo al inicioEliminar nodo al inicioImprimir datosEs una lista circular vaca?

  • Lista circular

    Crear lista circularAl crear una lista circular, se crea el nodo cabecera.El nodo cabecera tiene como dato null y como siguiente null.

  • Insertar nodo al inicio( La lista circular est vaca)Se crea un nuevo nodo con el dato que se desee colocar y con siguiente al nodo cabeceraEl campo siguiente del nodo cabecera pasa de ser null a ser el nodo que estamos insertadoLista circular

  • Insertar nodo al inicio( La lista no est vaca)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 insertandoLista circular

  • Eliminar nodo al inicio(La lista circular tiene mas de un nodo)Al nodo cabecera se le asigna como siguiente, el siguiente del primer nodoLista circular

  • Eliminar nodo al inicio(La lista circular tiene un nodo)Al campo siguiente del nodo cabecera se le asigna nullLista circular

  • Imprimir datosLista circular

  • Est una lista vaca?Cuando la lista est vaca el campo siguiente de la cabecera es nullLista circular

  • Cada nodo se representa por medio de dos campos:

    Campo dato: contiene el valor del nodoCampo siguiente: indica cul es el nodo con el que se enlazaclass Nodo{

    Object dato; Nodo siguiente;

    Nodo(Object o) { dato=o; siguiente=null; }

    Nodo(Object o, Nodo n) { dato=o; siguiente=n; }}Lista circular

  • Crear lista circularAl crear una lista circular, se crea el nodo cabecera.El nodo cabecera tiene como dato null y como siguiente null.

    class ListaC{

    Nodo cabecera;

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

    Lista circular

  • Est una lista circular vaca?

    Cuando la lista est vaca el campo siguiente de la cabecera es null

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

    Lista circular

  • Insertar nodo al inicio( La lista circular est vaca)

    Se crea un nuevo nodo con el dato que se desee colocar y con siguiente al nodo cabecera

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

    void insertar(Object o) { Nodo nuevo=new Nodo(null);

    if ( estaVacia() ) { nuevo=new Nodo(o); nuevo.siguiente=cabecera; cabecera.siguiente=nuevo; }

    Lista circular

  • Insertar nodo al inicio( La lista circular no est vaca)

    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 void insertar(Object o) { Nodo nuevo=new Nodo(null);

    if ( estaVacia() ) { nuevo=new Nodo(o); nuevo.siguiente=cabecera; cabecera.siguiente=nuevo; } else { nuevo=new Nodo(o); nuevo.siguiente=cabecera.siguiente; cabecera.siguiente=nuevo; } }Lista circular

  • Eliminar nodo al inicio

    Al campo siguiente del nodo cabecera se le asigna null, si solo hay un nodo

    Al nodo cabecera se le asigna como siguiente, el siguiente del primer nodo, si la lista circular tiene ms de un nodo public void eliminar() { Nodo borrar=cabecera.siguiente;

    if (borrar.siguiente==cabecera) cabecera.siguiente=null; else{ cabecera.siguiente=borrar.siguiente; } } Lista circular

  • LISTA DOBLEMENTE ENLAZADA

  • Lista doblemente enlazada

    DefinicinUna lista doblemente enlazada es una coleccin 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

  • 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 datoEl campo derecha del ultimo nodoDE apunta a nullizq. dato der.izq. dato der.izq. dato der.

    51

    99

  • Lista doblemente enlazada

    Definicin

    Una lista doblemente enlazada es una estructura de datos dinmica 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

    Definicin

    Las operaciones sobre una lista doblemente enlazada son:

    Crear listaDEInsertar nodo al inicioEliminar nodo al inicioImprimir datosEs una listaDE vaca?

  • Lista doblemente enlazada

    Crear lista doblemente enlazadaAl crear una listaDE, se crea el nodo cabecera.El nodo cabecera tiene como dato, izquierda y derecha a null.

  • Insertar nodo al inicio( La listaDE est vaca)Se crea un nuevo nodoDE con el dato que se desee colocar, campo izquierda apuntado al nodo cabecera y campo derecha apuntando a nullEl campo derecha del nodo cabecera pasa de ser null a ser el nodo que estamos insertadoLista doblemente enlazada

    9

  • Insertar nodo al inicio( La listaDE no est vaca)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 cabeceraAl campo izquierda del nodo apuntado por derecha del nodo cabecera se le asigna el nodo que estamos insertandoAl nodo cabecera se le asigna como derecha al nodo que estamos insertandoLista doblemente enlazada

    9

    1

    9

  • Eliminar nodo al inicioAl nodo cabecera se le asigna como derecha, la derecha del primer nodoAl campo izquierda del segundo nodo se le asigna como izquierda el nodo cabecera (Solo si hay ms de un nodo)Lista doblemente enlazada

    1

    9

    9

  • Imprimir datosLista doblemente enlazada

  • Est una listaDE vaca?Cuando la lista est vaca el campo derecha de la cabecera es nullLista doblemente enlazada

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

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

    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); }

    Lista doblemente enlazada

  • Est una lista circular vaca?

    Cuando la lista est vaca el campo derecha de la cabecera es null

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

    Lista doblemente enlazada

  • Insertar nodo al inicio( La listaDE est vaca)

    Se crea un nuevo nodoDE con el dato que se desee colocar, campo izquierda apuntado al nodo cabecera y campo derecha apuntando a nullEl 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

  • Insertar nodo al inicio( La listaDE no est vaca)

    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

  • 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 cabecerapublic 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

Recommended

View more >