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;
}
}
?
jueves, 19 de noviembre de 2015
Ejercicio2
Suscribirse a:
Comentarios de la entrada (Atom)




.png)




No hay comentarios.:
Publicar un comentario