Trabajo con Listas Enlazadas en Java

Una lista enlazada es una de las estructuras de datos fundamentales, y puede ser usada para implementar otras estructuras de datos. Consiste en una secuencia de nodos, en los que se guardan campos de datos arbitrarios y una o dos referencias, enlaces o punteros al nodo anterior o posterior. El principal beneficio de las listas enlazadas respecto a los vectores convencionales es que el orden de los elementos enlazados puede ser diferente al orden de almacenamiento en la memoria o el disco, permitiendo que el orden de recorrido de la lista sea diferente al de almacenamiento.

Las listas enlazadas pueden ser implementadas en muchos lenguajes. Lenguajes tales como Lisp y Scheme tiene estructuras de datos ya construidas, junto con operaciones para acceder a las listas enlazadas. Lenguajes imperativos u orientados a objetos tales como C o C++ y Java, respectivamente, disponen de referencias para crear listas enlazadas.

//———-CLASE OBJETO ——————————–

package miPaquete;
import java.io.Serializable;

/**
*
* @author yuniels
*/
public class Objeto implements Serializable{
private int id;
/* otros atributos*/
Objeto next, prev;

public Objeto (int id [, ….otros atributos…]) {
this.id= id;
/* otros atributos*/
this.next=null;
this.prev=null;
}

public intgetIde() {
return id;
}
}

//———–CLASE LISTA DE OBJETOS——————–

package miPaquete;
import java.io.Serializable;

/**
*
* @author yuniels
*/
public class ListaObj implements Serializable {     //lista de objetos
Objeto first;

public ListaObj (){
this.first=null;
}

}
//————————————————-
public boolean isEmpty(){

if (first==null)
return true;
else return false;
}
//————————————————-
public void Insertar(Objeto o){
Objeto aux;
aux=first;
if(aux==null){//lista vacia
first=o;
o.next=null;
o.prev=null;
}
else{
while(aux.next!=null){
aux=aux.next;
}//while
aux.next=o;
o.next=null;
o.prev=aux;
}
}
//—————————————————–

public Objeto deleteFirst(){
if(!isEmpty()){
Objeto o;
if(first.next==null){
o=first;
first=null;
}
else{
o=first;
first=first.next;
first.prev=null;
}
return o;
}
else
return null;
}

//————————————————-
public Objeto Eliminar(int id){
Objeto aux=first;
while(!aux.getId()==id)
aux=aux.next;
if((aux==first)&&(aux.next!=null)){
aux.next.prev=aux.prev;
first=aux.next;
}
else
if(aux==first)
first=null;
else
if(aux.next==null){
aux.prev.next=aux.next;
}
else{
aux.prev.next=aux.next;
aux.next.prev=aux.prev;
}
return aux;
}
//————————————————————–
public boolean Existe(int id){   //true si lo encuentra
Objeto aux=first;
if(aux==null)
return false;
else{
while(!aux.getId()==id){
aux=aux.next;
if(aux==null)
return false;
}
return true;
}
}

public Objeto Buscar(int id){  //devuelve null si no lo encuentra
Objeto aux=first;
if(aux==null)
return aux;
else{
while( !aux.getId()==id){
aux=aux.next;
if(aux==null)
return aux;
}
return aux;
}
}

}

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *