Return to Snippet

Revision: 10107
at December 8, 2008 11:51 by bedomax


Initial Code
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package tabs;

/**
 *
 * @author maximilianocaceres
 */
public class Lista {
    //el puntero al primer elemento
    private Nodo root;
    //el total de nodos en la lista
    private int numNodos;
    //el constructor inicializa las variables
    public Lista(){
        root = null;
        numNodos = 0;
    }
    
     public void add(String nombre,String apellido,int edad){
        
        
        Nodo newNodo;
        newNodo=new Nodo();
        newNodo.add(nombre, apellido, edad);
        
        
        //puntero temporal para recorreme en la lista
        Nodo tmp = root;
        
        //si la lista esta vacia
        if(tmp==null){
            //lo agregamos al root
            root = newNodo;
        }else{
            //de lo contrario nos recorremos hasta el ultimo
            while(tmp.ptr!=null)
                tmp = tmp.ptr;
            //en el ultimo hacemos el enlace 
            tmp.ptr = newNodo;
        }
        //incrementamos el numero de nodos
        numNodos++;
    }
     
     
     
    public String[][] print(){
        
        String datos[][];
        datos=new String[this.numNodos][3];
        
        Nodo tmp = root;
        //sercirandonos que no este vacia
        int cont=0;
        while (tmp != null){
                datos[cont][0]=tmp.nombre;
                datos[cont][1]=tmp.apellido;
                datos[cont][2]=""+tmp.edad;
                tmp=tmp.ptr;
                cont++;
        }
        
        return datos;
    } 
    
    public int mayoresdeedad(){
        
        Nodo tmp = root;
        int cont=0;
        while (tmp != null){
            if(tmp.edad>=18)
                cont++;
            tmp=tmp.ptr;
        }
        return cont;
    }
    
    
    public int menoresdeedad(){
        
        Nodo tmp = root;
        int cont=0;
        while (tmp != null){
            if(tmp.edad<18)
                cont++;
            tmp=tmp.ptr;
        }
        return cont;
    }
    
     
    public int size(){
        return numNodos;
    }
    
    
    //elimina un nodo deacuerdo al indice dado
    public void remover(int index){
        //revisamos que el indice este dentro del rango
        if(index < numNodos && index >= 0){
            //puntero para movernos en la lista
            Nodo tmp = root;
            //ravisamos que no este vacia
            if(tmp==null)
                System.out.println("La lista esta vacia");
            else if(index == numNodos-1 && index>0){
                //si es el ultimo nodo de la lista
                while(tmp.ptr.ptr!=null)
                    //nos movemos hasta uno antes del final
                    tmp = tmp.ptr;
                //eliminamos el enlace
                tmp.ptr = null;
                //decrementamos el total de nodos
                numNodos--;
                System.out.println("Borrado con exito!!");
            }else{
                //si es el primer nodo
                if(index == 0){
                    //movemos el root al siguiente nodo, entonces el primero lo perdemos
                    root = tmp.ptr;
                }else{
                    //nos movemos hasta un nodo antes del indice
                    int i=0;
                    while(i<index-1){
                        tmp = tmp.ptr;
                        i++;
                    }
                    //enlazamos el nodo anterior al indice, haciendo una especie de salto
                    //al nodo que querremos eliminar, de tal manera que el que queremos eliminar
                    //quede afuera de la lista
                    tmp.ptr = tmp.ptr.ptr;
                }
                //decrementamos el total de nodos
                numNodos--;
                System.out.println("Borrado con exito");
            }
        }else{
            System.out.println("Fuera del rango");
        }
    }
    
    
    public String getApellido(int pos){
        
        Nodo tmp = root;
        String devuelve="";
        int cont=0;
        while (tmp != null){
                if(cont==pos)
                devuelve=tmp.apellido;
                
                tmp=tmp.ptr;
                cont++;

        }
        
        return devuelve; 
    }
    
    
    public String getNombre(int pos){
        
        Nodo tmp = root;
        String devuelve="";
        int cont=0;
        while (tmp != null){
                if(cont==pos)
                devuelve=tmp.nombre;
                
                tmp=tmp.ptr;
                cont++;

        }
        
        return devuelve; 
    }
    
    
    public int getEdad(int pos){
        
        Nodo tmp = root;
        int devuelve=0;
        int cont=0;
        while (tmp != null){
                if(cont==pos)
                devuelve=tmp.edad;
                
                tmp=tmp.ptr;
                cont++;

        }
        
        return devuelve; 
    }
    
    public Lista ordenarAZ(Lista desorden){
        //int verifica=0,index=0;
        char cadena[];
        Lista nueva;
        nueva = new Lista();
        for(char i='a';i<='z';i++){
            
            for(int j=0;j<desorden.size();j++){
                String probar=desorden.getApellido(j);
                probar=probar.toLowerCase();
                cadena=probar.toCharArray();
                if(i==cadena[0]){
                    nueva.add(desorden.getNombre(j),desorden.getApellido(j),desorden.getEdad(j));
                }
            }
        
        }
        
        
        return nueva;
    } 
     
    
    public Lista ordenarZA(Lista desorden){
        //int verifica=0,index=0;
        char cadena[];
        Lista nueva;
        nueva = new Lista();
        for(char i='z';i>='a';i--){
            
            for(int j=0;j<desorden.size();j++){
                String probar=desorden.getApellido(j);
                probar=probar.toLowerCase();
                cadena=probar.toCharArray();
                if(i==cadena[0]){
                    nueva.add(desorden.getNombre(j),desorden.getApellido(j),desorden.getEdad(j));
                }
            }
        
        }
        
        
        return nueva;
    }
    
    public Lista ordenaredad(Lista desorden){
        //int verifica=0,index=0;
        Lista nueva;
        nueva = new Lista();
        
        for(int i=1;i<=150;i++){
            for(int j=0;j<desorden.size();j++){
                if(i==desorden.getEdad(j)){
                    nueva.add(desorden.getNombre(j),desorden.getApellido(j),desorden.getEdad(j));
                }
            }
        }
        
        
        
        
        return nueva;
    }
    
    
    
    public float promedio(){
        
        float promedio;
        promedio=0.2f;
        Nodo tmp = root;
        while (tmp != null){
                promedio+=tmp.edad;
                tmp=tmp.ptr;
        }
        promedio/=this.numNodos;
        return   promedio; 
    }
    
    
    public int edadmasalta(Lista revisar){
       
        int edad=0;
        for(int i=0;i<this.numNodos;i++){
            edad=revisar.getEdad(i);
            for(int j=0;j<this.numNodos;j++){
                if(revisar.getEdad(j)>=edad){
                    edad=revisar.getEdad(j);
                }
            }
        }
        
        return edad;
    }
     
    public int edadmasbaja(Lista revisar){
       
        int edad=0;
        for(int i=0;i<this.numNodos;i++){
            edad=revisar.getEdad(i);
            for(int j=0;j<this.numNodos;j++){
                if(revisar.getEdad(j)<=edad){
                    edad=revisar.getEdad(j);
                }
            }
        }
        
        return edad;
    } 
   

}

Initial URL


Initial Description
Proyecto Lista

Initial Title
Lista Estructuras

Initial Tags
java

Initial Language
Java