Crear una lista simple la cual debe ingresar números reales, luego ordenarlos de mayor a menor, imprimir la lista, obtener el promedio de los valores de cada lista, comprobar cuál es el valor que más se repite en la lista.
Para realizar este ejercicio es necesario recordar la definición de listas simples, las cuales tienen como principal característica que solo se puede avanzar, no se puede retroceder. Dicho esto se procedió a realizar un ordenamiento burbuja para que los elementos se comparen y se ordenen de mayor a menor. Para realizar un ordenamiento burbuja se debe utilizar sentencias for anidadas.
A continuación se muestra el código:
Clase Nodo:
Clase Nodo:
public class Nodo { //Declaración de atributos private int dato; private Nodo siguiente; //Constructor Nodo null public Nodo(int dato) { this.dato=dato; this.siguiente=null; } //Constructor Nodo con parametro public Nodo(int dato, Nodo siguiente) { this.dato=dato; this.siguiente=siguiente; } //Metodos getters and setters public int getDato() { return dato; } public void setDato(int dato) { this.dato = dato; } public Nodo getSiguiente() { return siguiente; } public void setSiguiente(Nodo siguiente) { this.siguiente = siguiente; } }
Clase Lista:
public class Lista { private Nodo inicio; private Nodo fin; public Lista() { inicio=fin=null; } //Metodo para agregar inicio public void agregarInicio(int info) { Nodo nuevo=new Nodo(info, inicio); if(inicio==null) { inicio=fin=nuevo; } inicio=nuevo; } //Metodo para agregar fin public void agregarFin(int info) { Nodo nuevo=new Nodo(info, null); if(inicio==null) { inicio=fin=nuevo; } else { fin.setSiguiente(nuevo); fin=nuevo; } } //Metodo para imprimir public void imprimir() { Nodo aux=inicio; while(aux!=null) { System.out.println(aux.getDato()); aux=aux.getSiguiente(); } } //Metodo para eliminar el nodo public void eliminarNodo(int numero) { if(inicio!=null) { if((inicio==fin)&&(inicio.getDato()==numero)) { inicio=fin=null; } else if(inicio.getDato()==numero) { inicio=inicio.getSiguiente(); } else { Nodo anterior=inicio; Nodo siguiente=inicio.getSiguiente(); while((siguiente!=null)&&(siguiente.getDato()!=numero)) { anterior=siguiente; siguiente=siguiente.getSiguiente(); } if(siguiente!=null) { anterior.setSiguiente(siguiente.getSiguiente()); if(siguiente==fin) { fin=anterior; } } } } } //Metodo ordenar de mayor a menor public void ordenarMayorMenor(int info) { int aux; Nodo recorrer=inicio; int array[]=new int [info]; for(int i=0;i<info;i++) { array[i]=recorrer.getDato(); recorrer=recorrer.getSiguiente(); } for(int k=0;k<info;k++) { for(int j=k+1;j<info;j++) { if(array[k]<array[j]) { aux=array[k]; array[k]=array[j]; array[j]=aux; } } } Lista nueva=new Lista(); for(int f=0;f<info;f++) { nueva.agregarFin(array[f]); } nueva.imprimir(); } //Metodo para calcular el promedio de la lista public void promedio() { Nodo aux=inicio; int suma=0; double promedio; while(aux!=null) { suma= suma+ aux.getDato(); aux=aux.getSiguiente(); } promedio=suma/5; System.out.println("El promedio de la lista es:"+promedio); } //Metodo para obtener el numero que más se repite y su frecuencia de repeticion public void repeticiones(int inf) { int frecTemp, frecModa=0, moda=-1; Nodo recorrer=inicio; int array[]=new int [inf]; for(int i=0;i<inf;i++) { array[i]=recorrer.getDato(); recorrer=recorrer.getSiguiente(); } for(int i=0;i<array.length-1;i++) { frecTemp=1; for(int j=i+1;j<array.length;j++) { if(array[i]==array[j]) frecTemp++; } if(frecTemp>frecModa) { frecModa=frecTemp; moda=array[i]; } } System.out.println("El elemento más repetido en la lista es: "+moda+", con una frecuencia de: "+frecModa); } }
Clase Principal:
import java.util.Scanner; public class Principal { public static void main(String[] args) { Scanner lectura=new Scanner(System.in); Lista coleccion=new Lista(); int n=5, dato; System.out.println("Ejercicio 1- Listas Simples\n"); for(int i=0;i<n;i++) { System.out.println("Ingrese el elemento "+(i+1)+" de la lista"); dato=lectura.nextInt(); coleccion.agregarInicio(dato); } System.out.println("Lista ingresada:"); coleccion.imprimir(); System.out.println("\nLista ordenada de mayor a menor"); coleccion.ordenarMayorMenor(n); coleccion.promedio(); coleccion.repeticiones(n); } }
Capturas de Pantalla:
MUCHISIMAS GRACIAS !
ResponderEliminar