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)
No hay comentarios.:
Publicar un comentario