Los ejercicicios que presento a continuacion son 2, explicare y mostrare codigo del primero despues presento el otro
1.- Se generan dos listas al azar Lista1 y Lista 2, donde se intercalan nodos de la lista2 con nodos de la lista1, luego se mueven a la derecha los nodos mas grende que su siguiente y finalmente se agrega un nodos de valor 100 al final de la lista
public class Ejercicio {
private static class Nodo {
private int info;
private Nodo nexo;
public Nodo(int dato) {
this.info = dato;
this.nexo = null;
}
}
private static Nodo inicio1=null, inicio2=null, ultimo1=null, ultimo2=null;
private static void agrega1(int dato) {
Nodo nuevo = new Nodo(dato);
if(ultimo1==null) inicio1 = nuevo;
else ultimo1.nexo = nuevo;
ultimo1 = nuevo;
}
private static void agrega2(int dato) {
Nodo nuevo = new Nodo(dato);
if(ultimo2==null) inicio2 = nuevo;
else ultimo2.nexo = nuevo;
ultimo2 = nuevo;
}
private static void muestra1() {
Nodo p;
System.out.print("Lista1");
p = inicio1;
while(p!=null) {
System.out.print(" - " + p.info);
p = p.nexo;
}
System.out.println();
}
//metodo para mostrar el contenido de los nodos de la lista2
private static void muestra2() {
Nodo p;
System.out.print("Lista2");
p = inicio2;
while(p!=null) {
System.out.print(" - " + p.info);
p = p.nexo;
}
System.out.println();
}
private static void intercala() {
Nodo p, q;
p=inicio1;
while(p!=null && inicio2!=null){
q=p.nexo;
p.nexo=inicio2;
inicio2=inicio2.nexo;
p.nexo.nexo=q;
p=q;
}}
private static void mayor() {
Nodo p=inicio1;
Nodo s=p;
while(p!=null && p.nexo==null){
if(p.info>s.info){
s=p.nexo;
p.nexo=s;
s=p.nexo;
p.nexo=s;
p=s;
System.out.print(" - "+p.info);}
}
}
private static void inserta() {
}
public static void main(String [] args) {
int i, n1=0, n2=0, dato;
n1 = (int)(Math.random()*10);
for(i=0;i<n1;i++) {
dato = 10 + (int)(Math.random()*90);
agrega1(dato);
}
n2 = (int)(Math.random()*10); /
for(i=0;i<n2;i++) {
dato = 10 + (int)(Math.random()*90);
agrega2(dato);
}
System.out.println("Listas generadas al azar");
muestra1();
muestra2();
System.out.println("\nSe intercalan nodos de la lista2 entre los nodos de la lista1");
intercala();
muestra1();
muestra2();
System.out.println("\nse mueven hacia la derecha los nodos mas grandes que su siguiente");
mayor();
muestra1();
System.out.println("\nSe inserta un nodo de igual valor despues de cada nodo de valor par");
inserta();
muestra2();
System.out.println("\nFinalmente agrega un nodo de valor 100 al final de la lista1");
agrega1(100);
muestra1();
}
}
2.- Este consiste en generar una cola al azar para luego hacer una sua recursivamente con cada uno de sus nodos
import java.text.*;
public class nuevocola {
public void hacerlo() {
int N = 10;
int M[] = new int[N];
int S, E;
S = (int)(Math.random()*N/2) - 1;
if(S==-1) E=-1;
else E=S + (int)(Math.random()*(N-S-1));
System.out.print("indice ");
for(int i=0; i<N; i++) System.out.print(i + " ");
System.out.println();
System.out.print("Cola");
for(int i=0; i<N; i++) {
M = 10 + (int)(Math.random()*90);
System.out.print(" " + M);
}
System.out.println(" S = " + S + ", E = "+ E);
System.out.print(" ");
for(int i=0; i<N; i++) {
if(i<S || i>E) System.out.print(" ");
else System.out.print(" **");
}
System.out.println (" ** = estan en cola");
System.out.println("Suma recursiva = " + SR(M, S, E));
}
private int SR(int M[], int S, int E) {
if(S==-1 || S>E) return 0;
else return M + SR(M, S+1, E);
}}
import java.util.Scanner;
public class usa {
public static void main(String args[]) {
nuevocola accion = new nuevocola();
Scanner entrada = new Scanner(System.in);
accion.hacerlo();
}
}
espero que les sirva. saludos
1.- Se generan dos listas al azar Lista1 y Lista 2, donde se intercalan nodos de la lista2 con nodos de la lista1, luego se mueven a la derecha los nodos mas grende que su siguiente y finalmente se agrega un nodos de valor 100 al final de la lista
public class Ejercicio {
private static class Nodo {
private int info;
private Nodo nexo;
public Nodo(int dato) {
this.info = dato;
this.nexo = null;
}
}
private static Nodo inicio1=null, inicio2=null, ultimo1=null, ultimo2=null;
private static void agrega1(int dato) {
Nodo nuevo = new Nodo(dato);
if(ultimo1==null) inicio1 = nuevo;
else ultimo1.nexo = nuevo;
ultimo1 = nuevo;
}
private static void agrega2(int dato) {
Nodo nuevo = new Nodo(dato);
if(ultimo2==null) inicio2 = nuevo;
else ultimo2.nexo = nuevo;
ultimo2 = nuevo;
}
private static void muestra1() {
Nodo p;
System.out.print("Lista1");
p = inicio1;
while(p!=null) {
System.out.print(" - " + p.info);
p = p.nexo;
}
System.out.println();
}
//metodo para mostrar el contenido de los nodos de la lista2
private static void muestra2() {
Nodo p;
System.out.print("Lista2");
p = inicio2;
while(p!=null) {
System.out.print(" - " + p.info);
p = p.nexo;
}
System.out.println();
}
private static void intercala() {
Nodo p, q;
p=inicio1;
while(p!=null && inicio2!=null){
q=p.nexo;
p.nexo=inicio2;
inicio2=inicio2.nexo;
p.nexo.nexo=q;
p=q;
}}
private static void mayor() {
Nodo p=inicio1;
Nodo s=p;
while(p!=null && p.nexo==null){
if(p.info>s.info){
s=p.nexo;
p.nexo=s;
s=p.nexo;
p.nexo=s;
p=s;
System.out.print(" - "+p.info);}
}
}
private static void inserta() {
}
public static void main(String [] args) {
int i, n1=0, n2=0, dato;
n1 = (int)(Math.random()*10);
for(i=0;i<n1;i++) {
dato = 10 + (int)(Math.random()*90);
agrega1(dato);
}
n2 = (int)(Math.random()*10); /
for(i=0;i<n2;i++) {
dato = 10 + (int)(Math.random()*90);
agrega2(dato);
}
System.out.println("Listas generadas al azar");
muestra1();
muestra2();
System.out.println("\nSe intercalan nodos de la lista2 entre los nodos de la lista1");
intercala();
muestra1();
muestra2();
System.out.println("\nse mueven hacia la derecha los nodos mas grandes que su siguiente");
mayor();
muestra1();
System.out.println("\nSe inserta un nodo de igual valor despues de cada nodo de valor par");
inserta();
muestra2();
System.out.println("\nFinalmente agrega un nodo de valor 100 al final de la lista1");
agrega1(100);
muestra1();
}
}
2.- Este consiste en generar una cola al azar para luego hacer una sua recursivamente con cada uno de sus nodos
import java.text.*;
public class nuevocola {
public void hacerlo() {
int N = 10;
int M[] = new int[N];
int S, E;
S = (int)(Math.random()*N/2) - 1;
if(S==-1) E=-1;
else E=S + (int)(Math.random()*(N-S-1));
System.out.print("indice ");
for(int i=0; i<N; i++) System.out.print(i + " ");
System.out.println();
System.out.print("Cola");
for(int i=0; i<N; i++) {
M = 10 + (int)(Math.random()*90);
System.out.print(" " + M);
}
System.out.println(" S = " + S + ", E = "+ E);
System.out.print(" ");
for(int i=0; i<N; i++) {
if(i<S || i>E) System.out.print(" ");
else System.out.print(" **");
}
System.out.println (" ** = estan en cola");
System.out.println("Suma recursiva = " + SR(M, S, E));
}
private int SR(int M[], int S, int E) {
if(S==-1 || S>E) return 0;
else return M
}}
import java.util.Scanner;
public class usa {
public static void main(String args[]) {
nuevocola accion = new nuevocola();
Scanner entrada = new Scanner(System.in);
accion.hacerlo();
}
}
espero que les sirva. saludos