Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/11/2011, 23:30
cuent
 
Fecha de Ingreso: noviembre-2011
Mensajes: 2
Antigüedad: 14 años, 10 meses
Puntos: 0
Exclamación metodo ordenar para la clase lista

Hola que tal tengo una lista doble y quiero crear un metodo que se llame ordenar

void Ordenar(){

}

y cuando ejecute este metodo se ordene la lista utilizando el metodo de ordenamiento MergeSort alguien me puede ayudar o darme una pista de como intercambiar los nodos gracias..!!

Aqui esta el Codigo:


Clase Nodo.java
Código PHP:
public class Nodo <T>{
    private 
T obj;
    private 
Nodo siguiente;
    private 
Nodo anterior;

    public 
Nodo(T o){
        
obj=o;
        
siguiente=null;
    }

    public 
Nodo() {
        
obj=null;
        
siguiente=null;
    }

    public 
Nodo(T o,Nodo s) {
        
obj=o;
        
siguiente=s;
    }

    public 
T getObjeto(){
        return 
obj;
    }

    public 
Nodo getSiguiente(){
        return 
siguiente;
    }

    public 
void setSiguiente(Nodo s){
        
siguiente=s;
    }


    public 
Nodo getAnterior(){
        return 
anterior;
    }

    public 
void setAnterior(Nodo a){
        
anterior=a;
    }


} 

Clase ListaOrdenada.java
Código PHP:
public class ListaOrdenada <T>{
    private 
Nodo tope,inicio;
    private 
int tamano;

    public 
ListaOrdenada(T o) {
        
Nodo nodo=new Nodo(o, tope);
        
nodo.setAnterior(null);
        
tope=nodo;
        
inicio=tope;
        
tamano=1;
        
//System.out.println("Anterior: "+nodo.getAnterior()+" Nodo: "+nodo+" Siguiente: "+nodo.getSiguiente());
    
}

    
void insertarFinal(T o){
        
Nodo aux=new Nodo(o);
        
aux.setAnterior(tope);
        
tope.setSiguiente(aux);
        
tope=aux;
        
tamano++;
        
//System.out.println("Anterior: "+aux.getAnterior()+" Nodo: "+aux+" Siguiente: "+aux.getSiguiente());
    
}

    
void insertar(T o,int pos){
        if (
pos <= getTamano() + 1)    {
            
Nodo aux = new Nodo (o);
            if (
pos == 1){
                
aux.setSiguiente(inicio);
                if (
inicio!=null)
                    
inicio.setAnterior(aux);
                
inicio = aux;
            } else
                if (
pos == getTamano() + 1)    {
                    
Nodo recorrer = inicio;//nuevo nodo para el objeto en la ultima posicicion
                    
while (recorrer.getSiguiente() != null) {
                        
recorrer = recorrer.getSiguiente();
                    }
                    
                    
recorrer.setSiguiente(aux);
                    
aux.setAnterior(recorrer);
                    
aux.setSiguiente(null);
                    
tope=aux;
                } else {
                    
Nodo recorrer = inicio;//para enontrar el nodo de la posicionespecificada
                    
for (int f = 1 ; f <= pos - 2 ; f++)
                        
recorrer = recorrer.getSiguiente();
                    
Nodo siguiente = recorrer.getSiguiente();
                    
recorrer.setSiguiente(aux);
                    
aux.setAnterior(recorrer);
                    
aux.setSiguiente(siguiente);
                    
siguiente.setAnterior(aux);
                }
            
tamano++;
        }
    }

    
void eliminarUltimo(){
        
tope=tope.getAnterior();
        
//tope.setSiguiente(null);
        
tamano--;
    }

    
void eliminar(int n){
        if(-
1!=buscar(n)){
            if (
n <= getTamano ())    {
                if (
n == 1) {
                    
inicio = inicio.getSiguiente();
                } else {
                    
Nodo aux;
                    
aux = inicio;
                    for (
int i = 1 ; i <= n - 2 ; i++)
                        
aux = aux.getSiguiente();
                    
Nodo prox = aux.getSiguiente();
                    
aux.setSiguiente(prox.getSiguiente());
                }
                
tamano--;
            }
        }
        else
            
System.out.println("ERROR: El numero no esta en el Rango de la Lista");
    }

    
int buscar(int n){
        if(
n>0 && n<tamano+1)
            return 
n;
        return -
1;
    }

    
boolean vacia(){
        return (
inicio==null);
    }

    
Vector mostrar(){
        
Vector<T> vect=new Vector<T>();
        if(
tamano!=0) {
            
Nodo aux = inicio;
            for(
int i = 0; i < this.tamano; i++) {
                
vect.add((T) aux.getObjeto());
                
//System.out.println(aux.getObjeto());
                
System.out.println(" pos:"+(i+1)+" Anterior: "+aux.getAnterior()+" Nodo: "+aux+" Siguiente: "+aux.getSiguiente());
                
aux=aux.getSiguiente();
            }
            return 
vect;
        }
        else
            
System.out.println("La Lista Esta Vacia");
        return 
null;
    }

    
int getTamano(){
        return 
tamano;
    }
} 

Clase Main
Código PHP:
    public static void main(String[] args) {
        
// TODO code application logic here
        
ListaOrdenada<Integer> lista=new ListaOrdenada<Integer>(6);
        
lista.insertar(1, 2);
        
lista.insertarFinal(4);
        
lista.insertar(3, 1);
        
lista.insertar(1, 10);
        
        
lista.ordenar();
        
System.out.print(lista.mostrar());

    }