Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/11/2011, 23:30
cuent
 
Fecha de Ingreso: noviembre-2011
Mensajes: 2
Antigüedad: 13 años
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(otope);
        
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 <= pos 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 (
<= getTamano ())    {
                if (
== 1) {
                    
inicio inicio.getSiguiente();
                } else {
                    
Nodo aux;
                    
aux inicio;
                    for (
int i <= 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>&& n<tamano+1)
            return 
n;
        return -
1;
    }

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

    
Vector mostrar(){
        
Vector<Tvect=new Vector<T>();
        if(
tamano!=0) {
            
Nodo aux inicio;
            for(
int i 0this.tamanoi++) {
                
vect.add((Taux.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<Integerlista=new ListaOrdenada<Integer>(6);
        
lista.insertar(12);
        
lista.insertarFinal(4);
        
lista.insertar(31);
        
lista.insertar(110);
        
        
lista.ordenar();
        
System.out.print(lista.mostrar());

    }