Ejercicios
Un polinomio se puede representar como una lista enlazada. El primer nodo de la lista representa el primer termino del polinomio, el segundo nodo al segundo término del polinomio y así sucesivamente. Cada nodo tiene como campo el dato el coeficiente del término y el exponente.
Clase Main
Clase Main
import java.util.Scanner;
public class Ejercicio7 {
public static int ingresarEntero(String mensaje, int min, int max) {
Scanner ingreso = new Scanner(System.in);
int dato;
do {
System.out.println(mensaje +" entre "+min +" y "+max);
dato = ingreso.nextInt();
} while (dato < min || dato > max);
return dato;
}
public static String ingresarString(String mensaje){
Scanner ingreso=new Scanner(System.in);
String texto="";
System.out.println(mensaje);
texto= ingreso.nextLine();
return texto;
}
public static void main(String[] args) {
int resp=0, num=0 ,grado=0,op=0;
Lista coleccion=new Lista();
Scanner Entrada= new Scanner(System.in);
do{
System.out.println("1-->Ingresar terminos \n2-->Reemplazar terminos(varios valores)\n3-->reemplazar con un valor determinado\nSeleccione una: ");
op=Entrada.nextInt();
switch(op){
case 1:{
do{
coleccion.agregarNodoAlFinal(new Numero(ingresarString("Ingrese el signo del termino \n Positivo --> +\n Negativo --> -"),
ingresarEntero("Ingrese el termino: ",1,100),
ingresarEntero("Ingrese el grado deltermino ",0,100)));
System.out.println("¿Desea ingresar un termino adicional?");
resp=Entrada.nextInt();
}while(resp!=0);
coleccion.recorreLista();
}
break;
case 2:
coleccion.reemplazo(0.5);
coleccion.reemplazo(1.0);
coleccion.reemplazo(1.5);
coleccion.reemplazo(2.0);
coleccion.reemplazo(2.5);
coleccion.reemplazo(3.0);
coleccion.reemplazo(3.5);
coleccion.reemplazo(4.0);
coleccion.reemplazo(4.5);
coleccion.reemplazo(5.0);
break;
case 3:
coleccion.reemplazo(ingresarEntero("Ingrese un numero ",-100,100));
break;
}
System.out.println("\n¿Desea ingresar otro termino? 1--->Si 0--->No");
resp=Entrada.nextInt();
}while(resp!=0);
System.out.println("\nEl polinomio es: ");
coleccion.recorreLista();
}
}
import static java.lang.Math.pow;
public class Lista {
Nodo inicio;
Nodo fin;
public void agregarNodoAlFinal(Numero obj){
Nodo nuevo=new Nodo(obj);
Nodo reco1;
Nodo reco2;
if(inicio==null){
inicio=nuevo;
nuevo.setSiguiente(null);
}else{
reco1=inicio;
while(reco1!=null){
reco2=reco1.getSiguiente();
if(nuevo.getNum().getGrado()>=reco1.getNum().getGrado()){
nuevo.setSiguiente(inicio);
inicio=nuevo;
break;
}else{
if(nuevo.getNum().getGrado()nuevo.getNum().getGrado()&&reco2.getNum().getGrado()<=nuevo.getNum().getGrado()){
reco1.setSiguiente(nuevo);
nuevo.setSiguiente(reco2);
break;
}else{
reco1=reco1.getSiguiente();
}
}
}
}
}
}
public void recorreLista(){
Nodo aux=inicio;
while(aux!=null){
if(aux.getNum().getGrado()>=1){
System.out.printf(aux.getNum().getSigno()+aux.getNum().getNum()+"x^"+aux.getNum().getGrado());
aux=aux.getSiguiente();
}else{
System.out.printf(aux.getNum().getSigno()+aux.getNum().getNum());
aux=aux.getSiguiente();
}
}
System.out.println("\n");
}
public void reemplazo(double n){
Nodo aux=inicio;
int r=0;
double exp=0, re=0, base=0, acu=0;
while(aux!=null){
base=(double)aux.getNum().getNum();
exp=(double)aux.getNum().getGrado();
re= pow(n,exp);
if(aux.getNum().getSigno().compareTo("+")==0){
acu=acu+(base*re);
}
if(aux.getNum().getSigno().compareTo("-")==0){
acu=acu-(base*re);
}
aux=aux.getSiguiente();
}
System.out.printf("\nEl resultado del reemplazo de: "+"f("+n+")=");
recorreLista();
System.out.printf("f("+n+")= "+acu);
}
}
Clase Nodo
public class Nodo {
Numero num;
Nodo Siguiente;
public Nodo(Numero num) {
this.num = num;
}
public Numero getNum() {
return num;
}
public void setNum(Numero num) {
this.num = num;
}
public Nodo getSiguiente() {
return Siguiente;
}
public void setSiguiente(Nodo Siguiente) {
this.Siguiente = Siguiente;
}
}
Clase Númeropublic class Numero {
String signo;
int num;
int grado;
public Numero(String signo, int num, int grado) {
this.signo = signo;
this.num = num;
this.grado = grado;
}
public String getSigno() {
return signo;
}
public void setSigno(String signo) {
this.signo = signo;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public int getGrado() {
return grado;
}
public void setGrado(int grado) {
this.grado = grado;
}
}
Como corre el Programa
Crear una Clase Punto, luego crear un TAD-lista simple, implementar un método para calcular la distancia entre el Punto de origen y el cada punto de la lista. Final mente determinar el punto mas alejado del origen.
Clase Main
public class Principal {
public static void main(String[] args) {
Lista coleccion=new Lista();
coleccion.insertarInicio(new Punto(5,8.6));
coleccion.insertarInicio(new Punto(-8,10));
coleccion.insertarInicio(new Punto(15,108.6));
coleccion.insertarFinal(new Punto(-50,-45));
coleccion.insertarInicio(new Punto(-17,81));
System.out.println("El nodo mas distante al origen es "+coleccion.Distancia().getDato().toString());
}
Clase Lista
public class Lista {
Nodo inicio;
Nodo fin;
public Lista() {
inicio=null;
fin=null;
}
public void insertarInicio(Punto dato){
Nodo nuevo=new Nodo(dato, inicio);
inicio=nuevo;
if(fin==null)
fin=inicio;
}
public void insertarFinal(Punto dato){
Nodo nuevo=new Nodo(dato,null);
if(inicio==null){
inicio=nuevo;
}else{
fin.setSiguiente(nuevo);
fin=nuevo;
}
}
public Nodo Distancia(){
Punto origen=new Punto(0,0);
Nodo aux=inicio;
Nodo mayorDistancia=inicio;
double mayor=0;
double distancia=0;
while(aux!=null){
distancia=calculoDistancia(origen, aux.getDato());
if(distancia>mayor){
mayor=distancia;
mayorDistancia=aux;
}
aux=aux.getSiguiente();
}
return mayorDistancia;
}
public double calculoDistancia(Punto a, Punto b){
double distancia=( Math.pow(b.getY()-a.getY(), 2.0)+Math.pow(b.getX()-a.getX(), 2.0));
return distancia;
}
}
Clase Nodo
public class Nodo {
private Punto dato;
private Nodo siguiente;
public Nodo(Punto dato) {
this.dato = dato;
this.siguiente = null;
}
public Nodo(Punto dato, Nodo siguiente){
this.dato=dato;
this.siguiente=siguiente;
}
public Punto getDato() {
return dato;
}
public void setDato(Punto dato) {
this.dato = dato;
}
public Nodo getSiguiente() {
return siguiente;
}
public void setSiguiente(Nodo siguiente) {
this.siguiente = siguiente;
}
}
Clase Punto
public class Punto {
private double x;
private double y;
public Punto() {
}
public Punto(double x, double y) {
this.x = x;
this.y = y;
}
public double getX() {
return x;
}
public void setX(double x) {
this.x = x;
}
public double getY() {
return y;
}
public void setY(double y) {
this.y = y;
}
@Override
public String toString() {
return "Punto (" + "x= " + x + ", y= " + y+")" ;
}
}
Como Corre el Programa
Crear
una lista simple la cual debe ingresar números reañes, luego ordenarlos de mayor a mayor, 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.
Clase Main
import java.util.Scanner;
public class Principal {
public static void main (String args[]){
Lista insertar=new Lista();
Scanner sc= new Scanner (System.in);
int res,num;
System.out.println("¿Cuantos numeros desea ingresar?");
res=sc.nextInt();
for(int i=0;i
Clase Lista
public class Lista {
private Nodo raiz;
public Lista(){
raiz=null;
}
public void insertarDato (int dato){
Nodo nuevo=new Nodo(dato);
Nodo reco1;
Nodo reco2;
if(raiz==null){
raiz=nuevo;
nuevo.siguiente=null;
}else{
reco1=raiz;
while(reco1!=null){
reco2=reco1.siguiente;
if(nuevo.dato>=reco1.dato){
nuevo.siguiente=raiz;
raiz=nuevo;
break;
}else{
if(nuevo.datonuevo.dato&&reco2.dato<=nuevo.dato){
reco1.siguiente=nuevo;
nuevo.siguiente=reco2;
break;
}else{
reco1=reco1.siguiente;
}
}
}
}
}
}
public void listarNodos(){
Nodo temporal=raiz;
while(temporal!=null){
System.out.println("" +temporal.dato);
temporal=temporal.siguiente;
}
}
public void promedioNodos(){
Nodo temporal=raiz;
int cont=0;
double prom=0;
while(temporal!=null){
cont++;
prom=prom+temporal.dato;
temporal=temporal.siguiente;
}
System.out.println("El promedio es: " +prom/cont);
}
public void repite(){
int cont=0;
int a[]=new int[100];
int frecuenciaTemp, frecuenciaModa = 0, moda =0;
Nodo temporal=raiz;
while(temporal!=null){
cont++;
a[cont]=temporal.dato;
temporal=temporal.siguiente;
}
for(int i=0;i<=cont;i++){
frecuenciaTemp=0;
for(int j=0;j= frecuenciaModa){
frecuenciaModa = frecuenciaTemp;
moda = a[i];
}
}
}
System.out.println("El que mas se repite es " + moda);
}
}
Clase Nodo
public class Nodo {
int dato;
Nodo siguiente;
Nodo(int dato) {
this.dato=dato;
}
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;
}
public Nodo(int dato, Nodo siguiente) {
this.dato = dato;
this.siguiente = siguiente;
}
}
Como corre el programa






