Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: soytupadre en 25 Julio 2012, 06:17 am



Título: ejercicios de estructura de datos
Publicado por: soytupadre en 25 Julio 2012, 06:17 am
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();
}
    }