Dudas de Programacion » Scripting » JavaScript

Listas circulares doblemente enlazadas en JAVA

(4 posts)
  1. Hola a todos... Soy nuevo en esto tengo una duda sobre las listas circulares doblemente enlazadas en JAVA... Es una tarea de la universidad y no entiendo. Me piden completar en codigo, y me dan las clases ListaDC, Main y Nodo...
    Gracias por su ayuda

    Posted 5 months ago #


  2. En Java existen las LinkedList, pero son lista enlazadas simplemente. En la universidad te piden que siguiendo la teoría de lo que son las lista circulares doblemente enlazadas:

    http://es.wikipedia.org/wiki/Lista_%28inform%C3%A1tica%29#Lista_Enlazada_Doblemente_Circular

    Hagas tu propia implementación en Java, te paso un ejemplo que he encontrado por internet, aunque te recomiendo que trates de hacer tu la implementación para entender bien está estructura de datos.

    http://saforas.wordpress.com/2008/07/28/listas-circulares-simples-y-dobles-en-java/

    Espero que te sirve de ayuda,

    Un saludo.

    Posted 5 months ago #
  3. Pero el problema es que lo que viene en esos archivos que me pasaste es muy distinto a lo que me estan dando para usar como base para implementar las listas circulares
    Adjunto parte del código:

    public class ListaDC {

    private Nodo cabeza;
    private Nodo ultimo; // apunta al ultimo elemento de la lista...

    //Incluir el codigo necesario para utilizar TODOS los metodos
    //de una lista Doble Circular

    public void inserta(Nodo p) {
    if (cabeza == null) { //Si la lista està vacìa???
    cabeza = p;
    ultimo= p;
    ultimo.setNext(cabeza);
    } else if (p.getId() < cabeza.getId()) {
    p.setNext(cabeza);
    cabeza.setBack(p);
    cabeza = p;
    } else if (cabeza.getNext() == null) {
    cabeza.setNext(p);
    p.setBack(cabeza);
    } else {
    Nodo aux = cabeza;
    while ((aux.getNext() != null) && (aux.getId() <= p.getId())) {
    aux = aux.getNext();
    }
    if (aux.getId() < p.getId()) { // inserto a la derecha
    aux.setNext(p);
    p.setBack(aux);
    } else { // inserto a la izquierda..
    p.setNext(aux);
    p.setBack(aux.getBack());
    aux.setBack(p);
    p.getBack().setNext(p);
    }
    }

    }

    public boolean elimina(int n) {
    boolean result = true;
    if (cabeza == null) { //Si la lista està vacìa???
    return false;
    } else if (n < cabeza.getId()) {
    return false;
    } else if (cabeza.getId() == n) {
    cabeza = cabeza.getNext();
    cabeza.setBack(null);
    } else {
    Nodo aux = cabeza;
    while ((aux.getNext() != null) && (aux.getId() < n)) {
    aux = aux.getNext();
    }
    if (aux.getId() == n) {
    aux.getBack().setNext(aux.getNext());
    if (aux.getNext() != null) {
    aux.getNext().setBack(aux.getBack());
    }
    }
    }
    return result;
    }

    public boolean existe(int n) { // retorna true si existe.. false sino...
    Nodo aux = cabeza;
    while (aux != null && aux.getId() < n) {
    aux = aux.getNext();
    }
    return (aux != null && aux.getId() == n);
    }

    public Nodo recupera(int n) { // retorna el elemento si existe... en la lista..

    Nodo aux = cabeza;
    while (aux != null && aux.getId() < n) {
    aux = aux.getNext();
    }
    if (aux != null && aux.getId() == n) {
    return aux;
    } else {
    return null;
    }

    }

    @Override
    public String toString() {
    Nodo aux = cabeza;
    String s = "Elementos:\n";
    while (aux != null) {
    s += aux + "\n";
    aux = aux.getNext();
    }
    return s;
    }
    }

    Posted 5 months ago #
  4. El código es distinto pero el funcionamiento es el mismo, ambas implementan Listas Circulares Doblemente Enlazadas.

    Por lo que veo te dan la clase ListaDC ya implementada, tu tendrás que implementar la clase Nodo o simplemente hacer una clase de Prueba, al estilo PruebaListaCircularDE.java.

    Un saludo!

    Posted 5 months ago #



Reply

You must log in to post.

557 posts in 248 topics over 18 months by 212 of 362 members. Latest: mari90, Laux, martin1975

Acerca de...

Dudas de Programación es una Web, dentro del proyecto aulambra.com que nace con la idea de propocionar un foro de consultas sobre diferentes temas de programación. Orientado a ayudar a los internautas hispano-hablantes en Internet.

Ir al Blog de Linea de Código

Otras Webs