Está en la página 1de 3

JOSE GUEVARA MERCADO ING.

ELECTRONICA ELEMENTOS DE LA PROGRAMACION


import java.util.Scanner;

public class Main {

static Scanner sc = new Scanner(System.in);

public static void main(String[] args) {


ListaSE<Integer> l1 = new ListaSE<Integer>();
ListaSE<Integer> l2 = new ListaSE<Integer>();
ListaSE<Integer> nuevaListaOrdenada = new ListaSE<Integer>();
llenarListaInteger(l1);
llenarListaInteger(l2);
ordenarYJuntar(l1,0,l2,0,nuevaListaOrdenada);
mostrar(nuevaListaOrdenada, 0);
}

public static void llenarListaInteger(ListaSE<Integer> lista){


String cad = "";
Integer num = null;
System.out.println("Inserte numeros, cuando termine presione t y enter");
while(!cad.equals("t")) {
cad = sc.next();
if(!cad.equals("t")) {
num = num.parseInt(cad);
lista.insertar(num);
}
}
}

public static void ordenarYJuntar(ListaSE<Integer> l1, int i1, ListaSE<Integer> l2, int i2, ListaSE<Integer> nueva) {
int n1 = l1.acceder(i1) != null? l1.acceder(i1).intValue() : 10000000;
int n2 = l2.acceder(i2) != null? l2.acceder(i2).intValue() : 10000000;
if(n1 > n2 ) {
nueva.insertar(new Integer(n2));
ordenarYJuntar(l1,i1,l2,i2+1,nueva);
}else if(n2 > n1) {
nueva.insertar(new Integer(n1));
ordenarYJuntar(l1,i1+1,l2,i2,nueva);
}
}

public static void mostrar(ListaSE<Integer> lista,int ind) {


if(lista.acceder(ind) != null) {
System.out.println(lista.acceder(ind).intValue() + ",");
mostrar(lista, ind+1);
}
}
}
public class ListaSE<T> implements Lista<T>{
T dato;
ListaSE<T> sig;

public ListaSE() {
dato = null;
sig = null;
}

@Override
public boolean vacia() {
return dato == null && sig == null;
}

@Override
public void insertar(T nuevoDato) {
if(vacia()) {
dato = nuevoDato;
sig = new ListaSE<T>();
}else {
sig.insertar(nuevoDato);
}
}

@Override
public T acceder(int pos) {
T res = null;
if(!vacia()) {
if(pos != 0) {
res = sig.acceder(pos-1);
}else {
res = dato;
}
}
return res;
}

@Override
public void modificar(int pos, T nuevoDato){
if(!vacia()){
if(pos == 0){
dato = nuevoDato;
}else{
sig.modificar(pos-1,nuevoDato);
}
}
}

@Override
public int longitud(){
int res = vacia()? longitud(this): 0;
return res;
}

private int longitud(ListaSE<T> lista){


int res = 0;
if(lista.vacia()){
res = 1 + longitud(lista.sig);
}
return res;
}

@Override
public void eliminarTodos(){
dato = null;
sig = null;
}
}

public interface Lista<T>{

public boolean vacia();

public void insertar(T e);

//public void insertarPosicion(int pos, T e);

//public T eliminar(int pos);

//public T eliminarElementos(T e);

public void eliminarTodos();

public int longitud();

public T acceder(int pos);

public void modificar(int pos,T e);