Traductor

Google-Translate-Chinese Google-Translate-Spanish to French Google-Translate-Spanish to German Google-Translate-Spanish to Japanese Google-Translate-Spanish to English Google-Translate-Spanish to Russian Google-Translate-Spanish to Portuguese Google-Translate-Spanish to Italian

jueves, 19 de noviembre de 2015

Ejercicio2

2.Crear una lista simple enlazada de número enteros, se desea añadir un nodo entre dos nodos consecutivos; el dato del nuevo nodo debe ser la diferencia en valor absoluto de los dos nodos.
Ejemplo si tengo la siguiente lista
 |   20   |   |   43   |  |   17   |  |   4    |  |    11   |
Se dese insertar un dato entre 43 y 17.
Reviso que exista la secuencia
Luego calculo el valor absoluto de (43-17)
Inserto entre esos elementos.
 |   20   |   |   43   |  |   26  |  |   17   |  |   4    |  |    11   |






import javax.swing.JOptionPane;



public class Ejercicio2 {

 public static void main(String[] args) 
 {
 Lista Lista1= new Lista();
  
  Lista1.agregarInicio(17);
  Lista1.agregarInicio(43);
  Lista1.agregarInicio(20);
  Lista1.agregarFin(4);
  Lista1.agregarFin(11);
  System.out.println("Lista inicial");
  Lista1.imprimir();
  
  int agregar = Integer.parseInt(JOptionPane.showInputDialog("Ingrese el número anterior al nuevo a ingresar"));
  
  Lista1.agregarNodo(agregar);

  System.out.println("Lista con el nuevo número:");
  Lista1.imprimir();

 

public class Nodo 
{

 //Declaración de atributos
 private int numero;
 private Nodo siguiente;
 
 //Constructor Nodo null
 public Nodo(int numero)
 {
  this.numero=numero;
  this.siguiente=null;
 }
 //Constructores
 public Nodo(int numero, Nodo siguiente)
 {
  this.numero=numero;
  this.siguiente=siguiente;
 }

 //Métodos get y set de la clase Nodo
 public int getNumero() {
  return numero;
 }

 public void setNumero(int numero) {
  this.numero= numero;
 }

 public Nodo getSiguiente() {
  return siguiente;
 }

 public void setSiguiente(Nodo siguiente) {
  this.siguiente = siguiente;
 }
 
}








public class Lista 
{

 private Nodo inicio;
 private Nodo fin;
 
 public Lista()
 {
  inicio=fin=null;
 }
 
 //Método que permite agregar un elemento al inicio de la lista
 public void agregarInicio(int info)
 {
  Nodo nuevo=new Nodo(info, inicio);
  if( inicio == null)
  {
   Inicio = fin = nuevo;
  }
  Inicio = nuevo;
 }
 
 //Método que permite agregar un elemento al fin de la lista
 public void agregarFin(int info)
 {
  Nodo nuevo=new Nodo(info, null);
  if ( inicio == null)
  {
   inicio=fin=nuevo;
  }
  else
  {
   fin . setSiguiente(nuevo);
   fin = nuevo;
  }
 }
 
 //Método  que permite  imprimir los elementos de la lista
 public void imprimir()
 {
  Nodo aux=inicio;
  while(aux!=null)
  {
   System.out.println(aux.getNumero());
   aux=aux.getSiguiente();
  }
 }


//Método que permite eliminar el nodo
 public void eliminarNodo(int num)
 {
  if(inicio!=null)
  {
   if((inicio==fin)&&(inicio.getNumero()==num))
   {
    inicio=fin=null;
   }
   else if(inicio.getNumero()==num)
   {
    inicio=inicio.getSiguiente();
   }
   else
   {
    Nodo anterior=inicio;
    Nodo siguiente=inicio.getSiguiente();
    while((siguiente!=null)&&(siguiente.getNumero()!=num))
    {
     anterior=siguiente;
     siguiente=siguiente.getSiguiente();
    }
    if(siguiente!=null)
    {
     anterior.setSiguiente(siguiente.getSiguiente());
     if(siguiente==fin)
     {
      fin=anterior;
     }
    }
   }
  }
 }
 
 //Metodo aue permite agregar un nuevo  nodo
 public void agregarNodo(int num)
 {
  if(inicio!=null)
  {
   if(inicio==fin && inicio.getNumero()==num)
   {
    inicio=fin=null;
   }
   else if(inicio.getNumero()==num)
   {
    inicio = inicio.getSiguiente();
   }
   else
   {    
    Nodo anterior = inicio;
    Nodo siguiente = inicio.getSiguiente();   
    while(siguiente!=null && anterior.getNumero()!=num)
    {

    anterior = siguiente;
    siguiente = siguiente.getSiguiente();

    }
    if (siguiente!=null)
    {
     Nodo nuevo = new Nodo(calculo(anterior.getNumero(),siguiente.getNumero()),siguiente);
     
     anterior.setSiguiente(nuevo);

     nuevo.setSiguiente(siguiente);

     if(siguiente == fin)
     {
      fin = anterior;
     }
    }
   }  
  }
 }


 //Método que permite calcular el valor absoluto entre números ubicados en nodos.
 public int valAbs(int primer, int segundo)
 {
  int num = primer -segundo;   
  num =Math.abs(num);
  return num;  
 }

}




?

No hay comentarios.:

Publicar un comentario