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
Dudas de Programacion » Scripting » JavaScript
Listas circulares doblemente enlazadas en JAVA
(4 posts)-
Posted 5 months ago #
-
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 # -
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 Circularpublic 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 # -
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.