lunes, 20 de octubre de 2014

Lista Circular en java

/*
Metodos Basicos
 */

package listacircular;

import java.util.Scanner;
import javax.swing.JOptionPane;

class Nodo
{
    public int info;
    public Nodo enlace;
    public Nodo(){}
}
class Lista
{
Nodo cab=null;//declaración del nodo

void InsertarNodo(int n)  //inserción por delante
{  if(cab==null)  //entra la primera vez
   {
        cab = new Nodo();  //crea el nodo cab
        cab.info=n;
        cab.enlace=cab;  //su primer enlace apunta a cabezera
   }
   else
   {    Nodo aux=cab;
        Nodo temp=new Nodo(); //nodo temporal
            temp.info=n;
         while(aux.enlace!=cab)
         {
            aux=aux.enlace;
         }
         aux.enlace=temp;
         temp.enlace=cab;
   }
}
void mostrarLista()
 {
  Nodo temp=cab;
    do
    {
        System.out.println("\t"+temp.info);
        temp=temp.enlace;
    }while(temp != cab); //recorre hasta llegar a cabezera
 }
void Eliminar(int i)
{
    Nodo aux=cab;
    Nodo temp= null;
    Nodo aux2 = null;
   
    while(aux.info != i && aux.enlace !=cab)
    {
        aux =aux.enlace;
        if(temp==null)
            temp=cab;
        else
            temp=temp.enlace;
    }
    if(temp==null)
    {
        if(cab.enlace != cab)
        {  
            aux2=cab;
            while(aux2.enlace!=cab)
                aux2=aux2.enlace;
           
            cab=cab.enlace;
            aux2.enlace=cab;
        }
         
        else
            cab=null;
    }
    if(temp!=null)
    {
      if(aux.info != i )
          System.out.println("no encontrado");
      else
      {
          temp.enlace=aux.enlace;
          System.out.println("encontrado");
         
      }
     }
 
   /* else
        temp.enlace = aux.enlace;
    if(aux.info != i)
        System.out.print("Valor no Encontrado...\n");
    else
        System.out.println("Valor Eliminado: "+aux.info+"\n");*/
}
void contar()
{
    int contar=0;
    Nodo temp=cab;
    do
    {
        contar++;
        temp=temp.enlace;
    }while(temp!=cab);
    System.out.println("la cantidad de Nodos es: "+contar);
}
void promedio()
{
    int contar=0,pro=0;
    Nodo temp=cab;
    do
    {
        contar++;
        temp=temp.enlace;
        pro+=temp.info;
       
    }while(temp!=cab);
    System.out.println("el promedio de los nodos es: "+(pro/contar));
}
void insertarordenado(int n)
{
    if(cab==null)  //entra la primera vez
          {
    cab = new Nodo();  //crea el nodo cab
    cab.info=n;
    cab.enlace=null;  //su primer enlace apunta a null
    }
        else {
        Nodo temp=new Nodo(); //nodo temporal
        temp.info=n;
        //temp.enlace=cab;
        //ab=temp;
            if(n>cab.info)
            {
                temp.enlace=cab;
                cab=temp;
            }
            else
            {
                Nodo aux=cab;
                while(aux.enlace!=null && n<aux.enlace.info)
                {
                  aux=aux.enlace;
                }
                temp.enlace=aux.enlace;
                aux.enlace=temp;

            }
        }
}

}
class Persona {

    public String nombre;
    public int edad;
    public double salario;
    public float peso;
    public Persona(String n1,int edad1,double sueldo, float masa)//constructor parametrizado
    {
        nombre = n1;
        edad =  edad1;
        salario = sueldo;
        peso = masa;
    }
    public Persona(){nombre = "pablo"; edad = 18;salario = 633000; peso = 75;}
public void put_datos()
{
    nombre = JOptionPane.showInputDialog("Ingrese Nombre: ");
    String aux = JOptionPane.showInputDialog("Ingrese edad: ");
    edad = Integer.parseInt(aux);
    String sal = JOptionPane.showInputDialog("Ingrese Salario: ");
    salario = Integer.parseInt(sal);
    String aux1 = JOptionPane.showInputDialog("Ingrese peso: ");
    peso = Integer.parseInt(aux1);
   
}
public void get_datos()
{
   JOptionPane.showMessageDialog(null,"nombre: "+nombre+"\n"+"edad: "+edad+"\n"+"salario: "+salario+"\n"+"peso: "+peso+" Kg");
}
}
public class ListaCircular
{

    public static void main(String[] args)
    {
      Lista A=new Lista();
      Persona p = new Persona();
     
      p.put_datos();
      p.get_datos();
     /* int num=0,opc=0;
      do
      {
      System.out.print("\nIngrese Nodo Nuevo: ");
      Scanner s2 = new Scanner(System.in);
      num=s2.nextInt();
      A.InsertarNodo(num);
      System.out.print("\nPresiona 1(uno) si Desea Ingresar un Nuevo Nodo. \nPresiona 0(cero) para Salir.\nSu Eleccion es: ");
      Scanner s1 = new Scanner(System.in);
      opc= s1.nextInt();
   
      }while(opc!=0);
      */
      A.InsertarNodo(4);
      A.InsertarNodo(7);
      A.InsertarNodo(3);
      //A.InsertarNodo(4);
      A.mostrarLista();
      System.out.print("---------------\n");
     // A.Eliminar(4);
      A.mostrarLista();
      A.contar();
    }
   
}

Lista Ordenada en java


package listaordenada;

/**
 *
 * @author LEONARDO
 */
public class ListaOrdenada
{

class Nodo
{
    int info;
    Nodo sig;
}
private Nodo raiz;
public ListaOrdenada()
{
    raiz=null;
}
void insertar(int x)
{
    Nodo nuevo = new Nodo ();
    nuevo.info = x;
    if (raiz==null)
    {
        raiz=nuevo;
    }
    else
    {
        if (x<raiz.info)
        {
            nuevo.sig=raiz;
            raiz=nuevo;
        }      
        else
        {
            Nodo reco=raiz;
            Nodo atras=raiz;
            while (x>=reco.info && reco.sig!=null)
            {
                atras=reco;
                reco=reco.sig;
            }
            if (x>=reco.info)
            {
                reco.sig=nuevo;
            }
            else
            {
                nuevo.sig=reco;
                atras.sig=nuevo;
            }
        }
    }
}
public void imprimir ()
{
  Nodo reco = raiz;
    while (reco != null)
    {
        System.out.print (reco.info + "-");
        reco = reco.sig;
    }
  System.out.println();
}
public static void main(String[] args)
{
  ListaOrdenada lo = new ListaOrdenada();
 
  lo.insertar(10);
  lo.insertar(5);
  lo.insertar(7);
  lo.insertar(50);
  lo.imprimir();
}
   
}

Taller listas Genericas Simples , Dobles

package lista;
class Nodo
{
    public int info;
    public Nodo enlace;
    public Nodo(){}
}
public class Lista
{
Nodo cab; //declaración del nodo
void InsertarNodo(int n)  //inserción por delante
{  if(cab==null)  //entra la primera vez
      {
cab = new Nodo();  //crea el nodo cab
cab.info=n;
cab.enlace=null;  //su primer enlace apunta a null
}
else {
Nodo temp=new Nodo(); //nodo temporal
temp.info=n;
temp.enlace=cab;
cab=temp;
}
}
void mostrarLista()
 {
Nodo temp=cab;
while(temp!=null)  //recorre hasta llegar a null
{
System.out.print(temp.info);
temp=temp.enlace;
}
   }
void insertarordenado(int n)
{
    Nodo temp=cab;
    int aux;
    Nodo temp2=new Nodo();
    temp2.info=n;
   
    while(temp!=null)
    {
        if(temp.info<temp2.info)
        {
            temp2.enlace=temp.enlace;
            temp.enlace=temp2;
        }
        else
        {
            aux=temp.info;
            temp.info=temp2.info;
            temp2.info=aux;
            temp2.enlace=temp.enlace;
            temp.enlace=temp2;
        }
        temp=temp.enlace;
    }
}
}
class prueba
{
public static void main(String[] args)
{
Lista A=new Lista();
A.InsertarNodo(2);
A.InsertarNodo(5);
A.InsertarNodo(8);
A.insertarordenado(3);
A.mostrarLista();
}
}

-------------------------------------------------------------------------------------------------------------------

//lista generica

package listagenerica;

/**
 *
 * @author LEONARDO
 */
public class ListaGenerica
{
class Nodo
{
    int info;
    Nodo ant,sig;
}
private Nodo raiz;
public ListaGenerica ()
{
    raiz=null;
}
void insertar (int pos, int x)
{
    if (pos <= cantidad () + 1)
    {
        Nodo nuevo = new Nodo ();
        nuevo.info = x;
        if (pos == 1)
        {
            nuevo.sig = raiz;
            if (raiz!=null)
            raiz.ant=nuevo;
            raiz = nuevo;
        }
        else
            if (pos == cantidad () + 1)
            {
                Nodo reco = raiz;
                while (reco.sig != null)
                {
                    reco = reco.sig;
                }
                reco.sig = nuevo;
                nuevo.ant=reco;
                nuevo.sig = null;
            }
            else
            {
                Nodo reco = raiz;
                for (int f = 1 ; f <= pos - 2 ;f++)
                    reco = reco.sig;
               
                Nodo siguiente = reco.sig;
                reco.sig = nuevo;
                nuevo.ant=reco;
                nuevo.sig = siguiente;
                siguiente.ant=nuevo;
            }
    }
}
public int extraer (int pos)
{
    if (pos <= cantidad ())
    {
        int informacion;
        if (pos == 1)
        {
            informacion = raiz.info;
            raiz = raiz.sig;
            if (raiz!=null)
                raiz.ant=null;
        }
        else
        {
            Nodo reco;
            reco = raiz;
            for (int f = 1 ; f <= pos - 2 ; f++)
                reco = reco.sig;
           
            Nodo prox = reco.sig;
            reco.sig = prox.sig;
            Nodo siguiente=prox.sig;
           
            if (siguiente!=null)
                 siguiente.ant=reco;
           
            informacion = prox.info;
        }
        return informacion;
    }
    else
    return Integer.MAX_VALUE;
}
public void borrar (int pos)
{
    if (pos <= cantidad ())
    {
        if (pos == 1)
        {
            raiz = raiz.sig;
            if (raiz!=null)
            raiz.ant=null;
        }
        else
        {
            Nodo reco;
            reco = raiz;
            for (int f = 1 ; f <= pos - 2 ; f++)
                reco = reco.sig;
           
            Nodo prox = reco.sig;
            prox=prox.sig;
            reco.sig = prox;
           
            if (prox!=null)
                prox.ant=reco;
        }
    }
}
public void intercambiar (int pos1, int pos2)
{
    if (pos1 <= cantidad () && pos2 <= cantidad())
    {
        Nodo reco1 = raiz;
        for (int f = 1 ; f < pos1 ; f++)
            reco1 = reco1.sig;
       
        Nodo reco2 = raiz;
        for (int f = 1 ; f < pos2 ; f++)
            reco2 = reco2.sig;
       
        int aux = reco1.info;
        reco1.info = reco2.info;
        reco2.info = aux;
    }
}
public int mayor ()
{
    if (!vacia ())
    {
        int may = raiz.info;
        Nodo reco = raiz.sig;
       
        while (reco != null)
        {
            if (reco.info > may)
            may = reco.info;
            reco = reco.sig;
        }
      return may;
    }
    else
        return Integer.MAX_VALUE;
}
public int posMayor()
{
    if (!vacia ())
    {
        int may = raiz.info;
        int x=1;
        int pos=x;
        Nodo reco = raiz.sig;
        while (reco != null)
        {
            if (reco.info > may)
            {
                may = reco.info;
                pos=x;
            }
            reco = reco.sig;
            x++;
        }
        return pos;
    }
    else
        return Integer.MAX_VALUE;
}
public int cantidad ()
{
    int cant = 0;
    Nodo reco = raiz;
    while (reco != null)
    {
        reco = reco.sig;
        cant++;
    }
   return cant;
}
public boolean ordenada()
{
    if (cantidad()>1)
    {
        Nodo reco1=raiz;
        Nodo reco2=raiz.sig;
        while (reco2!=null)
        {
            if (reco2.info<reco1.info)
            {
                return false;
            }
            reco2=reco2.sig;
            reco1=reco1.sig;
        }
    }
return true;
}
public boolean existe(int x)
{
 Nodo reco=raiz;
    while (reco!=null)
    {
        if (reco.info==x)
        return true;
        reco=reco.sig;
    }
 return false;
}
public boolean vacia ()
{
    if (raiz == null)
    return true;
    else
    return false;
}
public void imprimir ()
{
Nodo reco = raiz;
    while (reco != null)
    {
        System.out.print (reco.info + "-");
        reco = reco.sig;
    }
 System.out.println();
}

public static void main(String[] args)
{
    ListaGenerica lg=new ListaGenerica();
    lg.insertar (1, 10);
    lg.insertar (2, 20);
    lg.insertar (3, 30);
    lg.insertar (2, 15);
    lg.insertar (1, 115);
    lg.imprimir ();
        System.out.println ("Luego de Borrar el primero");
    lg.borrar (1);
    lg.imprimir ();
        System.out.println ("Luego de Extraer el segundo");
    lg.extraer (2);
    lg.imprimir ();
        System.out.println ("Luego de Intercambiarel primero con el tercero");
    lg.intercambiar (1, 3);
    lg.imprimir ();
   
    if (lg.existe(10))
        System.out.println("Se encuentra el 20 en la lista");
    else
        System.out.println("No se encuentra el20 en la lista");
   
        System.out.println("La posición del mayor es:"+lg.posMayor());
    if (lg.ordenada())
        System.out.println("La lista está ordenada de menor a mayor");
    else
        System.out.println("La lista no está ordenada de menor a mayor");
}
   
}

----------------------------------------------------------------------------------------------------------
/*
Plantear una clase para administrar una lista genér
ica doblemente encadenada
implementando los siguientes métodos:
a) Insertar un nodo al principio de la lista.
b) Insertar un nodo al final de la lista.
c) Insertar un nodo en la segunda posición. Si la l
ista está vacía no se inserta el nodo.
d) Insertar un nodo en la ante última posición.
e) Borrar el primer nodo.
f) Borrar el segundo nodo.
g) Borrar el último nodo.
h) Borrar el nodo con información mayor.
 */
package listagenericadoble;

/**
 *
 * @author LEONARDO
 */
public class ListaGenericaDoble
{
 class Nodo
 {
    int info;
    Nodo ant,sig;
 }
private Nodo raiz;
public ListaGenericaDoble ()
{
    raiz=null;
}
void insertarPrimero(int x)
{
    Nodo nuevo = new Nodo ();
   
    nuevo.info = x;
    nuevo.sig=raiz;
    if (raiz!=null)
        raiz.ant=nuevo;
    raiz=nuevo;
}
public void insertarUtlimo(int x)
{
    Nodo nuevo = new Nodo ();
    nuevo.info = x;
   
    if (raiz==null)
        raiz=nuevo;
    else
    {
        Nodo reco=raiz;
        while (reco.sig!=null)
        {
            reco=reco.sig;
        }
        reco.sig=nuevo;
        nuevo.ant=reco;
    }
}
public void insertarSegundo(int x)
{
    if (raiz!=null)
    {
        Nodo nuevo = new Nodo ();
        nuevo.info = x;
        if (raiz.sig==null)
        {
        //Hay un solo nodo.
            raiz.sig=nuevo;
            nuevo.ant=raiz;
        }
        else
        {
            Nodo tercero=raiz.sig;
            nuevo.sig=tercero;
            tercero.ant=nuevo;
            raiz.sig=nuevo;
            nuevo.ant=raiz;
        }
    }
}
public void insertarAnteUltimo(int x)
{
    if (raiz!=null)
    {
        Nodo nuevo = new Nodo ();
        nuevo.info = x;
        if (raiz.sig==null)
        {
            //Hay un solo nodo.
            nuevo.sig=raiz;
            raiz=nuevo;
        }
        else
        {
            Nodo reco=raiz;
            while (reco.sig!=null)
            {
                reco=reco.sig;
            }
            Nodo anterior=reco.ant;
            nuevo.sig=reco;
            nuevo.ant=anterior;
            anterior.sig=nuevo;
            reco.ant=nuevo;
        }
    }
}
public void borrarPrimero()
{
    if (raiz!=null)
    {
        raiz=raiz.sig;
    }
}
public void borrarSegundo()
{
    if (raiz!=null)
    {
        if (raiz.sig!=null)
        {
            Nodo tercero=raiz.sig;
            tercero=tercero.sig;
            raiz.sig=tercero;
            if (tercero!=null)
                tercero.ant=raiz;
        }
    }
}
public void borrarUltimo ()
{
    if (raiz!=null)
    {
        if (raiz.sig==null)
        {
            raiz=null;
        }
        else
        {
            Nodo reco=raiz;
            while(reco.sig!=null)
            {
                reco=reco.sig;
            }
            reco=reco.ant;
            reco.sig=null;
        }
    }
}
public void imprimir ()
{
    Nodo reco = raiz;
    while (reco != null)
    {
        System.out.print (reco.info + "-");
        reco = reco.sig;
    }
    System.out.println();
}
public void borrarMayor()
{
    if (raiz!=null)
    {
        Nodo reco=raiz;
        int may=raiz.info;
        while (reco!=null)
        {
            if (reco.info>may)
            {
                may=reco.info;
            }
            reco=reco.sig;
        }
        reco=raiz;
        while (reco!=null)
        {
            if (reco.info==may)
            {
                if (reco==raiz)
                {
                    raiz=raiz.sig;
                    if (raiz!=null)
                    raiz.ant=null;
                    reco=raiz;
                }
                else
                {
                    Nodo atras=reco.ant;
                    atras.sig=reco.sig;
                    reco=reco.sig;
                    if (reco!=null)
                        reco.ant=atras;
                }
            }
            else
                reco=reco.sig;
        }
    }
}
public static void main(String[] ar)
{
    ListaGenericaDoble lg=new ListaGenericaDoble();
   
    lg.insertarPrimero (10);
    lg.insertarPrimero(45);
    lg.insertarPrimero(23);
    lg.insertarPrimero(89);
    lg.imprimir();
    System.out.println("Insertamos un nodo al final:");
    lg.insertarUtlimo(160);
    lg.imprimir();
    System.out.println("Insertamos un nodo en la segunda posición:");
    lg.insertarSegundo(13);
    lg.imprimir();
    System.out.println("Insertamos un nodo en la anteultima posición:");
    lg.insertarAnteUltimo(600);
    lg.imprimir();
    System.out.println("Borramos el primer nodode la lista:");
    lg.borrarPrimero();
    lg.imprimir();
    System.out.println("Borramos el segundo nodo de la lista:");
    lg.borrarSegundo();
    lg.imprimir();
    System.out.println("Borramos el ultimo nodo de la lista:");
    lg.borrarUltimo();
    lg.imprimir();
    System.out.println("Borramos el mayor de la lista:");
    lg.borrarMayor();
    lg.imprimir();
}
}

Listas Simples en java

//METODO BASICOS

package prueba;

class Nodo
{
    public int info;
    public Nodo enlace;
    public Nodo(){}
}
class Lista
{
Nodo cab; //declaración del nodo
void InsertarNodo(int n)  //inserción por delante
{  if(cab==null)  //entra la primera vez
      {
        cab = new Nodo();  //crea el nodo cab
        cab.info=n;
        cab.enlace=null;  //su primer enlace apunta a null
      }
    else 
    {
    Nodo temp=new Nodo(); //nodo temporal
    temp.info=n;
    temp.enlace=cab;
    cab=temp;
    }
}
void mostrarLista()
 {
Nodo temp=cab;
while(temp!=null)  //recorre hasta llegar a null
{
System.out.println("\t"+temp.info);
temp=temp.enlace;
}
   }
void contar()
{
    int contar=0;
    Nodo temp=cab;
    while(temp!=null)
    {
        contar++;
        temp=temp.enlace;
    }
    System.out.println("la cantidad de Nodos es: "+contar);
}
void insertarordenado(int n)
{
    if(cab==null)  //entra la primera vez
          {
    cab = new Nodo();  //crea el nodo cab
    cab.info=n;
    cab.enlace=null;  //su primer enlace apunta a null
    }
        else {
        Nodo temp=new Nodo(); //nodo temporal
        temp.info=n;
        //temp.enlace=cab;
        //ab=temp;
            if(n>cab.info)
            {
                temp.enlace=cab;
                cab=temp;
            }
            else
            {
                Nodo aux=cab; 
                while(aux.enlace!=null && n<aux.enlace.info)
                {
                  aux=aux.enlace; 
                }
                temp.enlace=aux.enlace;
                aux.enlace=temp;

            }
        }
}

}

class Prueba
{
public static void main(String[] args) 
{
Lista A=new Lista();
A.InsertarNodo(1);
A.InsertarNodo(3);
A.InsertarNodo(4);
//A.insertarordenado(2);
//A.insertarordenado(0);
A.mostrarLista();
A.contar();
}
}