2 ejercicios, una de lista y uno de cola

Iniciado por pedro sebastian, 1 Agosto 2012, 19:26 PM

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

pedro sebastian

Los ejercicicios que presento a continuacion son 2, explicare y mostrare codigo del primero despues presento el otro


1.- Se generan dos listas al azar Lista1 y Lista 2, donde se intercalan nodos de la lista2 con nodos de la lista1, luego se mueven a la derecha los nodos mas grende que su siguiente y finalmente se agrega un nodos de valor 100 al final de la lista
public class Ejercicio {

     private static class Nodo {
      private int  info;
      private Nodo nexo;
      public Nodo(int dato) {
         this.info = dato;
         this.nexo  = null;
      }
   }
   
    private static Nodo inicio1=null, inicio2=null, ultimo1=null, ultimo2=null;
   
     private static void agrega1(int dato) {
      Nodo nuevo = new Nodo(dato);
      if(ultimo1==null) inicio1 = nuevo;
      else         ultimo1.nexo = nuevo;
      ultimo1 = nuevo;
   }
   
      private static void agrega2(int dato) {
      Nodo nuevo = new Nodo(dato);       
      if(ultimo2==null) inicio2 = nuevo;
      else         ultimo2.nexo = nuevo;
      ultimo2 = nuevo;
   }
   
    private static void muestra1() {
      Nodo p;
      System.out.print("Lista1");
      p = inicio1;
      while(p!=null) {
         System.out.print(" - " + p.info);
         p = p.nexo;
      }
      System.out.println();
   }
   
   //metodo para mostrar el contenido de los nodos de la lista2   
   private static void muestra2() {
      Nodo p;
      System.out.print("Lista2");
      p = inicio2;
      while(p!=null) {
         System.out.print(" - " + p.info);
         p = p.nexo;
      }
      System.out.println();
   }
   
   private static void intercala() {
Nodo p, q;
p=inicio1;
while(p!=null && inicio2!=null){
q=p.nexo;
p.nexo=inicio2;
inicio2=inicio2.nexo;
p.nexo.nexo=q;
p=q;
}}
   
   private static void mayor() {
       Nodo p=inicio1;
       Nodo s=p;
       
       while(p!=null && p.nexo==null){
           if(p.info>s.info){
               s=p.nexo;
               p.nexo=s;
               s=p.nexo;
               p.nexo=s;
               p=s;
                System.out.print(" - "+p.info);}
            }
        }
         
   private static void inserta() {

   }
   

   public static void main(String [] args) {
      int i, n1=0, n2=0, dato;
     
      n1 = (int)(Math.random()*10);           
      for(i=0;i<n1;i++) {
         dato = 10 + (int)(Math.random()*90); 
         agrega1(dato);
      }
     
      n2 = (int)(Math.random()*10);             /
      for(i=0;i<n2;i++) {
         dato = 10 + (int)(Math.random()*90);   
         agrega2(dato);
      }
      System.out.println("Listas generadas al azar");
      muestra1();
      muestra2();
     
      System.out.println("\nSe intercalan nodos de la lista2 entre los nodos de la lista1");
      intercala();
      muestra1();
      muestra2();
     
      System.out.println("\nse mueven hacia la derecha los nodos mas grandes que su siguiente");
      mayor();
      muestra1();
     
      System.out.println("\nSe inserta un nodo de igual valor despues de cada nodo de valor par");
      inserta();
      muestra2();
     
      System.out.println("\nFinalmente agrega un nodo de valor 100 al final de la lista1");
      agrega1(100);
      muestra1();
     
   }
}


2.- Este consiste en generar una cola al azar para luego hacer una sua recursivamente con cada uno de sus nodos

import java.text.*;

public class nuevocola {

public void hacerlo() {
      int N = 10;
      int M[] = new int[N];
      int S, E;
     
      S = (int)(Math.random()*N/2) - 1;
      if(S==-1) E=-1;
      else      E=S + (int)(Math.random()*(N-S-1));
     
           System.out.print("indice  ");
      for(int i=0; i<N; i++) System.out.print(i + "    ");
      System.out.println();
      System.out.print("Cola");
      for(int i=0; i<N; i++) {
         M = 10 + (int)(Math.random()*90);
         System.out.print("   " + M);
      }
      System.out.println("    S = " + S + ", E = "+ E);
      System.out.print("    ");
      for(int i=0; i<N; i++) {
         if(i<S || i>E) System.out.print("     ");
         else           System.out.print("   **");
      }
      System.out.println ("    ** = estan en cola");

      System.out.println("Suma recursiva = " + SR(M, S, E));
   }
   
   private int SR(int M[], int S, int E) {
       if(S==-1 || S>E) return 0;
       else             return M + SR(M, S+1, E);
   }}


import java.util.Scanner;
public class usa {

public static void main(String args[]) {
nuevocola accion = new nuevocola();
Scanner entrada = new Scanner(System.in);
 
accion.hacerlo();
    }
    }



espero que les sirva. saludos

pedro sebastian

 M + SR(M, S+1, E);
   }}


import java.util.Scanner;
public class usa {

public static void main(String args[]) {
nuevocola accion = new nuevocola();
Scanner entrada = new Scanner(System.in);
 
accion.hacerlo();
    }
    }


les adjunto lo que sale tajado, nose xq ***** salio asi