martes, 29 de enero de 2013

LISTA GENERICA




MAIN

package listagenerica;
/**
 *
 * @author user
 */
public class Main {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        /*este método ingresa los ejercicios que se realizaran*/
        // TODO código de aplicación se coloca aqui
run:
1-> 4-> 5-> 10-> 18-> 20-> 
1-> 4-> 5-> 10-> 18-> 
1-> 4-> 10-> 18-> 
1-> 10-> 18-> 
1-> 2-> 10-> 18-> 22-> 27-> 
1-> 2-> 10-> 18-> 22-> 
BUILD SUCCESSFUL (total time: 2 seconds)
 
   
   Lista l=new Lista();
        l.insertar(10);
        l.insertar(1);
        l.insertar(5);
        l.insertar(18);
        l.insertar(20);
        l.insertar(4);
        l.mostrar();
        l.borrar(20);
        l.mostrar();
        l.borrar(5);
        l.mostrar();
        l.borrar(4);
        l.mostrar();
        l.insertar(27);
        l.insertar(2);
        l.insertar(22);
        l.mostrar();
        l.borrar(27);
        l.mostrar();
    }
}

NODO

package listagenerica;
/**
 *
 * @author user
 */
public class Nodo {
    int dato; /*ingresa una variable dato*/
    Nodo enlace; /*ingresa un nodo enlace*/
    public Nodo(int x) { /*ingresa una clase nodo con una variable x*/
        dato = x; /*esta variable x se iguala a la variable dato*/
        enlace = null; /*el nodo enlace se iguala a null*/
    }
    public Nodo(int x, Nodo n) { /*ingresa una clase nodo con variables x y un nodo n*/
        dato = x; /*a la variable x la iguala a la variable dato*/
        enlace = n; /*la variable n la iguala a la variable n*/
    }
    public int leerDato() {/*ingresa una clase leer datos*/
        return dato; /*regresa la variable dato*/
    }
    public Nodo siguiente() { /*ingresa una clase siguiente*/
        return enlace; /*retorna la variable enlace*/
    }
}


LISTA

package listagenerica;
/**
 *
 * @author user
 */
public class Lista { //crea la clase lista//
    private Nodo primero; //crea nodo privado primero//
    Nodo actual; //crea nodo actual//
    public Lista() {
        actual = null; //a nodo actual se le iguala a null/
        primero=null; //a nodo primero se le igual a primero//
    }
public boolean listaVacia (){ //crea una clase listavacia()
    boolean a=false; //se crea una variable a con un valor booleano falso//
    if(primero==null){ //si el nodo primero es igual a null //
    a= true; //la variable a se convierte a valor booleano verdadero//
    }
    return a; //retorna el valor de a, al sistema//
}
public void insertar(int v){ //crea una clase insertar con una variable v//
    Nodo anterior; //crea un nodo anterior//
    if(listaVacia() || primero.dato > v){ //determina que si listavacia o primer dato son menores que v//
        primero = new Nodo(v, primero); //al nuevo nodo(v, primero) lo iguala a primero//
    }
    else {//si no Buscar el nodo de valor menor a v//
      anterior = primero;
      // Avanzamos hasta el último elemento o hasta que el siguiente tenga
      // un valor mayor que v
      while(anterior.enlace !=null && anterior.enlace.dato <= v){
         anterior = anterior.enlace;
        }
      // Creamos un nuevo nodo después del nodo anterior, y cuyo siguiente
      // es el siguiente del anterior
      anterior.enlace = new Nodo(v,anterior.enlace);
   }
}
public void borrar(int v){ //crea un constructor borra con una variable v//
    Nodo anterior; //crea un nodo anterior
    Nodo nodo; //crea un nodo llamado nodo
    nodo = primero; // a la variable primero la iguala al nodo
   anterior = null; //a null lo iguala al nodo anterior
   while(nodo !=null && nodo.dato < v) { //mientras que nodo sea diferente a null y nodo dato sean menores que v entonces
      anterior = nodo; // a nodo lo iguala a anterior
      nodo = nodo.enlace; // a nodo.enlace lo iguala a nodo
   }
   if(nodo == null || nodo.dato != v) return; // y si nodo es igual a null o nodo.dato es diferente a v regresa
   else { // Borrar el nodo
      if(anterior==null) // si anterior es igual a null Primer elemento
         primero = nodo.enlace; //a nodo.enlace igualarlo a primero
      else  // un elemento cualquiera
         anterior.enlace = nodo.enlace;// de lo contrario iguala anterior enlace a nodo.enlace
      nodo=null; // y elimina el nodo
   }
}
public void mostrar()
{
   Nodo aux; //crea un nodo auxiliar
   aux = primero; //a un nodo auxiliar se le igual apuntador primero
   while(aux !=null) { //mientras nodo auxiliar sea diferente a null entonces
      System.out.print(aux.dato + "-> "); //imprime el nodo auxiliar y el símbolo ->
      aux = aux.enlace; //y a nodo auxiliar lo iguala a auxiliar enlace para continuar el ciclo
   }
   System.out.println(" "); //y cuando acaba imprime un espacio
}
public void siguiente()
{
   if(actual!=null) actual = actual.enlace;
}
public void darPrimero()
{
   actual = primero;
}
public void darUltimo()
{
   actual = primero;
   if(!listaVacia()){
      while(actual.enlace!=null){ siguiente();}
    }
   }
}


No hay comentarios:

Publicar un comentario