ejercicios de estructura de datos

Iniciado por soytupadre, 25 Julio 2012, 06:17 AM

0 Miembros y 1 Visitante están viendo este tema.

soytupadre

Hola este es mi primer post, estudio analisis de sistemas.
El ejercicios constiste en generar dos listas al azar, luego de la primera sacar los pares y agregarlos a las segunda lista, posteriormete sacar los impares de la lista 2 y agregarlos a primera lista. espero que les sirva.saludos

public class acciones
    {private static class Nodo
        {private int info;
            private Nodo nexo;
            public Nodo(int dato)
            {this.info=dato;
                this.nexo=null;}
            }
   
            private static Nodo ini1=null,ini2=null,ult1=null,ult2=null;
   
            private static void agre1(int dato)// agrega nodos
            {Nodo nuevo =new Nodo(dato);
                if (ult1==null)
                ini1=nuevo;
                else
                ult1.nexo=nuevo;
                ult1=nuevo;
            }
   
            private static void agre2(int dato)
                {Nodo nuevo =new Nodo(dato);
                    if (ult2==null)
                    ini2=nuevo;
                    else
                    ult2.nexo=nuevo;
                    ult2=nuevo;
                }
   
            private static void mostrar1()
            {Nodo p;
                System.out.print("lista 1 =");
                p=ini1;
                while(p!=null)
                {System.out.print("-" + p.info);
                 p=p.nexo;
                }
                    System.out.println();
            }
   
   
            private static void mostrar2()
            {Nodo p;
             System.out.print("lista 2 =");
             p=ini2;
             while(p!=null)
             {System.out.print("-" + p.info);
                 p=p.nexo;
                }
                System.out.println();
            }
           
            private static void eliminar1(int dato){
                Nodo p,q,ant;
                 p=ini1;
                ant=null;
                while(p!=null){
                    q=p.nexo;
                    if(p.info==dato){
                        if(ant==null){
                            ini1=p.nexo;
                        }
                        else{
                            ant.nexo=p.nexo;
                        }
                        p=null;
                    }else{
                        ant=p;
                        p=q;
                    }
                }
            }
           
            private static void eliminar2(int dato){
                Nodo p,q,ant;
                 p=ini2;
                ant=null;
                while(p!=null){
                    q=p.nexo;
                    if(p.info==dato){
                        if(ant==null){
                            ini2=p.nexo;
                        }
                        else{
                            ant.nexo=p.nexo;
                        }
                        p=null;
                    }else{
                        ant=p;
                        p=q;
                    }
                }
            }

           private static void modifica1()//saca los pares ed lista1 y los mete en lista2
           {Nodo p1,q,ant1;
               p1=ini1;
               while(p1!=null)
               {q=p1.nexo;
                if(p1.info%2==0)
                {agre2(p1.info);
                 eliminar1(p1.info);
                }
                p1=q;
            }
        }
                       
           
       
     private static void modifica2()//saca los pares ed lista1 y los mete en lista2
           {Nodo p2,q,ant2;
               p2=ini2;
               while(p2!=null)
               {q=p2.nexo;
                if(p2.info%2==1)
                {agre1(p2.info);
                 eliminar2(p2.info);
                }
                p2=q;
            }
        }
             
       
   

        public static void main(String [] args)
        {int i, l1=0,l2=0,dato;

            l1=(int)(Math.random()*10);
            for(i=0;i<l1;i++)
            {dato=10+(int)(Math.random()*90);
                agre1(dato);
            }
   
            l2=(int)(Math.random()*10);
            for(i=0;i<l2;i++)
            {dato=10+(int)(Math.random()*90);
                agre2(dato);
            }
   
            System.out.println("listas generadas al azar");
            mostrar1();
            mostrar2();
           
            System.out.println("LISTA 1 sin nodos pares y estos agregados a lista2");
            modifica1();
            mostrar1();
            mostrar2();
           
            System.out.println("LISTA 2 sin nodos impares y estos agregados a lista 1");
            modifica2();
            mostrar1();
            mostrar2();
}
    }