Está en la página 1de 11

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS AÑO DEL

BICENTENARIO DEL PERÚ: 200 AÑOS DE INDEPENDENCIA

E.P. INGENIERÍA DE SISTEMAS

ESTRUCTURA DE DATOS

DOCENTE: Javier Elmer Cabrera Diaz

Actividad: implementar listas encadenadas con COLLECTIONS, GENERICS,

interfaces MODELO INICIAL DE DOCENTE COMO AYUDA

Estudiante:

Gonzales Camarena, Dylan Bruno

LIMA- PERÚ

2022
//CLASE INTERFACE
package estdattareasem2;
import java.util.Collection;
public interface MiLista<E> extends Collection<E> {
//anhadir un nuevo elemetno a la lista dado el indice
public void add(int indice, E e);
//devuelve el elemento del indice dado
public E get(int indice);
//devolver indice del ultimo elemento de la lista igual al buscamo, sino devolver -1
public int indicealultimobuscado(E e);
//devolver indice del primer elemento de la lista igual al buscamo, sino devolver -1
public int indicealprimerbuscado(E e);
//eliminar una elemento en una psocion, devolver el elemetno eleiminado
public E elimina(int indice);
//anhadir al final
@Override
public default boolean add(E e){
add(size(), e);
return true;
}
public E set(int indice, E e);
@Override
public default boolean isEmpty(){
return size()==0;
}
// tarea: override para elimnara elemento.
// contains,removeAll, addAll, retainAll de Collection
// toArray(), toArray(T[ ])
}
//CLASE QUE HEREDA DE INTERFACE
package estdattareasem2;
import java.util.Collection;
import java.util.Iterator;
public class Nodo<E> implements MiLista {
int longitud = 0;
E cabeza;
E elemento;
Nodo<E> next;
public Nodo(E e) {
this.elemento = e;
this.next = null;
}
@Override
public void add(int indice, Object e) {
Nodo nuevonodo = new Nodo(e);
if (cabeza == null) {
cabeza=(E) nuevonodo;
System.out.println("Se agrego "+e+ " a la posicion "+indice);
longitud++;
return;
}
Nodo<E> puntero = (Nodo<E>) cabeza;
int contador = 0;
while (contador < indice && puntero.next != null) {
puntero = (Nodo<E>) puntero.next;
contador++;
}
if(contador<indice){
nuevonodo.next = puntero.next;
puntero.next = nuevonodo;
System.out.println("Se agrego "+e+ " a la posicion "+indice);
longitud++;
return;
}
if(puntero.next==null){
System.out.println("El indice que colocó sobrepasa el tamaño de la lista");
}
}
@Override
public Object get(int indice) {
if (cabeza == null) {
System.out.println("No hay ningún elemento en esa posición");
return -1;
}
Nodo<E> puntero = (Nodo<E>) cabeza;
int contador = 0;
while (contador < indice && puntero.next != null) {
puntero = (Nodo<E>) puntero.next;
contador++;
}
if(contador==indice){
System.out.print("El elemento en la posicion "+indice + " es: ");
return puntero.elemento;
}
return -1;
}
@Override
public int indicealultimobuscado(Object e) {
if (cabeza == null) {
System.out.println("No hay ningún elemento en la lista");
return -1;
}
int contador = 0;
Nodo<E> puntero = (Nodo<E>) cabeza;
while (puntero.elemento != e && puntero.next != null) {
puntero = puntero.next;
contador++;
}
if (puntero.next == null) {
System.out.println("No se encontró el elemento en la lista");
return -1;
}
puntero = puntero.next;
while (puntero.elemento == e) {
contador++;
puntero = puntero.next;
}
System.out.print("El ultimo elemento "+e+" fue encontrado en la posicion: ");
return contador;
}
@Override
public int indicealprimerbuscado(Object e) {
if (cabeza == null) {
System.out.println("Ese elemento no tienen ningún indice");
return -1;
}
Nodo<E> puntero = (Nodo<E>) cabeza;
int contador = 0;
while (puntero.elemento != e && puntero.next != null ) {
puntero = puntero.next;
contador++;
}
if(puntero.elemento==e){
System.out.print("El primer elemento "+ e+" encontrado fue en la posicion: ");
return contador;
}
return -1;
}
@Override
public Object elimina(int indice) {
if (cabeza == null) {
System.out.println("Esta lista no tienen ningún indice");
return -1;
}
Nodo<E> puntero = (Nodo<E>) cabeza;
int contador = 0;
while (contador < (indice-1) && puntero.next!=null) {
puntero = puntero.next;
contador++;
}
if(puntero.next == null){
System.out.println("La posicion puesta es mayor que el tamanio de la lista");
return -1;
}
Nodo<E> temp = puntero.next;
puntero.next = temp.next;
temp.next = null;
longitud--;
System.out.print("ELIMINADO! el elemento de la posicion "+indice+": ");
return temp.elemento;
}
@Override
public Object set(int indice, Object e) {
throw new UnsupportedOperationException("Not supported yet."); //To change
body of generated methods, choose Tools | Templates.
}
@Override
public boolean contains(Object o) {
if (cabeza == null) {
return false;
}
int contador = 0;
Nodo<E> puntero = (Nodo<E>) cabeza;
while (puntero.elemento != o && puntero.next != null) {
puntero = puntero.next;
contador++;
}
if(puntero.elemento==o){
return true;
}
return false;
}
@Override
public Object[] toArray() {
Object[] arreglo= new Object[longitud];
if (cabeza == null) {
System.out.println("Ese elemento no tienen ningún indice");
return arreglo;
}
Nodo<E> puntero = (Nodo<E>) cabeza;
int contador = 0;
while (contador<arreglo.length) {
arreglo[contador] = puntero.elemento;
puntero = puntero.next;
contador++;
}
return arreglo;
}
@Override
public Object[] toArray(Object[] a) {
Object[] arreglo= new Object[a.length];
for (int i = 0; i < a.length; i++) {
arreglo[i] = a[i];
}
return arreglo;
}
@Override
public boolean removeAll(Collection c) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public boolean retainAll(Collection c) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public int size() {
return longitud;
}
@Override
public Iterator iterator() {
throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public boolean remove(Object o) {
throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public boolean containsAll(Collection c) {
throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public boolean addAll(Collection c) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void clear() {
}

}//CLASE PRINCIPAL
package estdattareasem2;
public class EstdatTAREASEM2 {
public static void main(String[] args) {
Nodo nuevonodo = new Nodo(1);
nuevonodo.add(0, 5);
nuevonodo.add(1, 5);
nuevonodo.add(2, 8);
nuevonodo.add(3, 9);
nuevonodo.add(4, 10);
nuevonodo.add(5, 10);
nuevonodo.add(6, 10);
nuevonodo.add(7, 13);
System.out.println(nuevonodo.get(3));
System.out.println(nuevonodo.indicealprimerbuscado(10));
System.out.println(nuevonodo.indicealultimobuscado(10));
System.out.println("IMPRIMIENDO LISTA ENLAZADA");
for (int i = 0; i < nuevonodo.size(); i++) {
System.out.print(nuevonodo.toArray()[i] + " ");
}
System.out.print("\n");
System.out.println("El tamanio de la lista es " + nuevonodo.size());
System.out.println(nuevonodo.elimina(0));
System.out.println("IMPRIMIENDO LISTA ENLAZADA");
for (int i = 0; i < nuevonodo.size(); i++) {
System.out.print(nuevonodo.toArray()[i] + " ");
}
System.out.print("\n");
System.out.println("El tamanio de la lista es " + nuevonodo.size());

if (nuevonodo.contains(10)) {
System.out.println("El elemento 10 si existe en la lista");
} else {
System.out.println("El elemento 10 no existe en la lista");
}
}
}

También podría gustarte