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());
}