SlideShare una empresa de Scribd logo
1 de 27
UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS
UNIVERSIDAD DEL PERÚ, DECANA DE AMÉRICA
FACULTAD DE INGENIERÍA DE SISTEMAS E INFORMATICA
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS
ASIGNATURA: ESTRUCUTRA DE DATOS
“Actividad 3 – Semana 1”
SECCIÓN: N° 01
DOCENTE: Javier Elmer Cabrera Díaz
SEMESTRE: Quinto
ESTUDIANTES: Jack Marlon Valqui Trujillo
LIMA – PERÚ 2022
“Año del Fortalecimiento de la Soberanía Nacional”
2
CÓDIGO FUENTE
Clases Nodo
package semana2.tareas;
public class Nodo <T>{
T elemento;
Nodo<T> next;
public Nodo(T e){
elemento=e;
next = null;
}
}
Clases MiListaEnlazada
package semana2.tareas;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
public class MiListaEnlazada<T> implements MiLista<T>{
public Nodo<T> cabeza = null;
public Nodo<T> ultimo = null;
3
public int longi = 0;
//MÉTODOS PROPIOS DE CLASE
//LISTO
public MiListaEnlazada(T[] e){
for (int i = 0; i < e.length; i++)
insertarInicio(e[i]);
}
//LISTO
public T getPrimero(){
if(cabeza!=null)
return this.cabeza.elemento;
return null;
}
//LISTO
public T getUltimo(){
if(ultimo!=null)
return this.ultimo.elemento;
return null;
}
//LISTO
public void insertarInicio(T e){
Nodo<T> nuevo = new Nodo(e);
nuevo.next = cabeza;
cabeza = nuevo;
longi++;
4
if(cabeza.next==null)
ultimo= nuevo;
}
//LISTO
public void insertarFinal(T e){
if(cabeza != null){
Nodo<T> puntero = cabeza;
Nodo<T> nuevo = new Nodo(e);
while (puntero.next != null) {
puntero = puntero.next;
}
puntero.next = nuevo;
ultimo= nuevo;
longi++;
}else{
insertarInicio(e);
}
}
//LISTO
public void eliminarPrimero(){
if(cabeza!=null){
Nodo<T> puntero = cabeza;
cabeza = cabeza.next;
puntero.next = null;
longi--;
}
5
}
//LISTO
public void eliminarUltimo(){
if(cabeza!=null){
if(cabeza.next == null){
cabeza =null;
ultimo = null;
}else{
Nodo<T> puntero = cabeza;
while (puntero.next.next != null) {
puntero = puntero.next;
}
ultimo = puntero;
puntero.next = null;
}
longi--;
}
}
//LISTO
public void mostrarLista(){
Nodo<T> puntero = cabeza;
while(puntero!= null){
System.out.print(puntero.elemento+"->");
puntero = puntero.next;
}
}
6
//MÉTODOS DADOS POR LA INTERFACE MiLista
@Override //LISTO
public void add(int indice, T e) {
if(indice==0 && cabeza !=null)
insertarInicio(e);
else if(indice<longi && indice>0){
Nodo<T> puntero = cabeza;
Nodo<T> nuevo = new Nodo(e);
int contador=0;
while(contador<(indice-1) && puntero.next.next!= null){
puntero = puntero.next;
contador++;
}
nuevo.next = puntero.next;
puntero.next = nuevo;
longi++;
}
else
System.out.println("Indice fuera del rango posible");
}
@Override //LISTO
7
public T get(int indice) {
if(indice==0)
return cabeza.elemento;
else if(indice<longi && indice>0){
Nodo<T> puntero = cabeza;
int contador = 0;
while (contador < indice && puntero.next != null) {
puntero = puntero.next;
contador++;
}
return puntero.elemento;
}else{
System.out.println("Indice fuera de los permitidos");
return null;
}
}
@Override//LISTO
public int indicealultimobuscado(T e) {
int indice=-1;
if(cabeza!=null){
Nodo<T> puntero = cabeza;
int contador=0;
while(puntero.next!=null){
8
if(puntero.elemento == e)
indice=contador+1;
contador++;
puntero = puntero.next;
}
}
return indice;
}
@Override//LISTO
public int indicealprimerbuscado(T e) {
int indice=-1;
if(cabeza!=null){
Nodo<T> puntero = cabeza;
int contador=0;
while(puntero !=null){
if(puntero.elemento == e){
indice=contador+1;
return indice;
}
contador++;
9
puntero = puntero.next;
}
}
return indice;
}
@Override //LISTO
public T elimina(int indice) {
if(cabeza!=null){
if(indice==0){
Nodo<T> temp = cabeza;
cabeza=cabeza.next;
temp.next=null;
longi--;
return temp.elemento;
}else if(indice<longi && indice>0){
Nodo<T> puntero = cabeza;
int contador = 0;
while (contador < (indice - 1)) {
puntero = puntero.next;
contador++;
}
Nodo<T> temp = puntero.next;
10
puntero.next = temp.next;
temp.next= null;
longi--;
return temp.elemento;
}else{
System.out.println("Elemento fuera de rango");
}
}
return null;
}
@Override //LISTO
public void set(int indice,T e) {
if(cabeza!=null){
if(indice<longi && indice>=0){
Nodo<T> puntero = cabeza;
int contador = 0;
while (contador < indice && puntero.next != null) {
contador++;
puntero = puntero.next;
}
puntero.elemento = e;
}
}
}
11
//MÉTODOS DE LA INTERFAZ COLLECTION
@Override //LISTO
public boolean addAll(Collection<? extends T> c){
ArrayList<T> elemts = new ArrayList<>(c);
for (int i = 0; i <elemts.size(); i++) {
insertarFinal(elemts.get(i));
}
return true;
}
@Override
public void clear(){
while(cabeza !=null){
eliminarUltimo();
}
}
@Override//LISTO
public boolean contains(Object c){
boolean contiene = false;
if(cabeza!= null){
Nodo<T> puntero = cabeza;
while (puntero != null) {
if (puntero.elemento.equals(c)) {
12
contiene = true;
return contiene;
}
puntero = puntero.next;
}
}
return contiene;
}
@Override//LISTO
public boolean containsAll(Collection<?> c){
int contador =0;
T valor;
if(cabeza!= null){
Nodo<T> puntero = cabeza;
ArrayList<T> comparador = (ArrayList<T>) c;
for (int i = 0; i < comparador.size(); i++) {
valor = comparador.get(i);
if(contains(valor))
contador++;
}
return comparador.size() == contador;
}
return false;
}
13
@Override//LISTO
public boolean remove(Object o){
if(contains(o)){
T element = (T) o;
T eliminado;
int indice = indicealprimerbuscado(element)-1;
eliminado = elimina(indice);
System.out.println("Elemento eliminado: "+eliminado);
return true;
}
return false;
}
@Override//LISTO
public boolean removeAll(Collection<?> c){
ArrayList<T> elemt = (ArrayList) c;
boolean repetir = true;
for (int i = 0; i < elemt.size(); i++) {
while(repetir){
repetir = remove(elemt.get(i));
}
repetir = true;
}
14
return true;
}
@Override//LISTO
public boolean retainAll(Collection<?> c){
ArrayList<T> elemt = (ArrayList) c;
ArrayList<T> eliminar = new ArrayList<>();
Nodo<T> puntero = cabeza;
boolean aEliminar = true;
T valor;
while (puntero != null) {
valor = puntero.elemento;
for (int i = 0; i < elemt.size(); i++) {
if(valor.equals(elemt.get(i))){
aEliminar = false;
break;
}
}
if(aEliminar)
eliminar.add(valor);
puntero = puntero.next;
aEliminar = true;
}
removeAll(eliminar);
15
return true;
}
@Override//LISTO
public Object[] toArray(){
Object[] a = new Object[longi];
Nodo<T> puntero = cabeza;
for (int i = 0; i < longi ; i++) {
a[i] = puntero.elemento;
puntero = puntero.next;
}
return a;
}
@Override//LISTO
public <E> E[] toArray(E[] a){
Object[] alterno = toArray() ;
//Crea un nuevo arreglo del tiempo en tiempo de ejecución, pero con mi contenido:
if (a.length < longi)
return (E[]) Arrays.copyOf(alterno, longi, a.getClass());
System.arraycopy(alterno, 0, a, 0, longi);
if (a.length > longi)
a[longi] = null;
return a;
16
}
//NO ESPECIFICADOS POR LE PROFESOR
@Override
public int size() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated
methods, choose Tools | Templates.
}
@Override
public Iterator<T> iterator() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated
methods, choose Tools | Templates.
}
}
}
Interface MiLista
package semana2.tareas;
import java.util.ArrayList;
import java.util.Collection;
public interface MiLista<E> extends Collection<E> {
//añadir un nuevo elemento a la lista dado el indice
17
public void add(int indice, E e);
//devuelve el elemento del indice dado
public E get(int indice);
//devolver el indice del último elemento de la lista igual al buscado, sino devolver -1
public int indicealultimobuscado(E e);
//devolver el indice del primer elemento de la lista igual al buscado, sino devolver -1
public int indicealprimerbuscado(E e);
//elminar un elemento de una posición, devolver el elemento eliminado
public E elimina(int indice);
//Modifica el elemento en función al indice
public void set(int indice, E e);
//añadir al final
@Override
public default boolean add(E e){
add(size(), e);
return true;
}
18
@Override
public default boolean isEmpty(){
return size()==0;
}
}
Clase Main
package semana2.tareas;
import java.util.ArrayList;
public class C_MiLista {
public static void main(String[] args) {
//DECLARACIÓN DE OBJETOS A UTILIZAR
String[] alumnos = {"Jack", "Jimmy", "Jheus", "Jean"};
MiListaEnlazada<String> list = new MiListaEnlazada<>(alumnos);
ArrayList<String> paises = new ArrayList<String>();
paises.add("Perú");
paises.add("Venezuela");
paises.add("Argentina");
paises.add("Brazil");
19
ArrayList<String> capitales = new ArrayList<String>();
capitales.add("Lima");
capitales.add("Caracas");
capitales.add("Buenos Aires");
capitales.add("Brazilia");
ArrayList<String> personas = new ArrayList<String>();
personas.add("Jheus");
personas.add("Jack");
personas.add("Winni");
//COMPROBACIÓN DE LOS MÉTODOS DESCRITOS
//Mostranlo la lista inicial
System.out.println("LISTA INICIALIZADA");
list.mostrarLista();
//MÉTODOS getPrimero y getUltimo y su Longitud
System.out.println("nnVARIABLES DE LA CLASE MiListaEnlazada");
System.out.println(" PRIMERO: " + list.getPrimero());
System.out.println(" ULTIMO: " + list.getUltimo());
System.out.println(" LONGITUD: " + list.longi);
20
//Eliminando el último elemento - MÉTODO eliminarUltimo()- y mostramos la lista actual
list.eliminarUltimo();
System.out.println("nLISTA ACTUALIZADA");
list.mostrarLista();
System.out.println("nnVARIABLES DE LA CLASE MiListaEnlazada ACTUALIZADOS");
System.out.println(" PRIMERO: " + list.getPrimero());
System.out.println(" ULTIMO: " + list.getUltimo());
System.out.println(" LONGITUD: " + list.longi);
//Obtenemos un elemento particualar de la lista - MÉTODO get()
System.out.println("nELEMENTOS PARTICULARES DE LA LISTA");
System.out.println(" Elmento 1: " + list.get(0));
System.out.println(" Elmento 2: " + list.get(1));
System.out.println(" Elmento 3: " + list.get(2));
//Anexando un elemento a la Lista a partir del indice - MÉTODO add()
list.add(2, "Winni");
list.add(0, "Winni");
System.out.println("nANEXANDO LOS NUEVOS ELEMENTOS");
list.mostrarLista();
//Buscando el indice un elemento a la Lista - MÉTODOS indicealultimobuscado() y
indicealprimerbuscado()
System.out.println("nnBUSCANDO EL ÍNDICE DEL PRIMER Y ÚLTIMO ELEMENTO");
System.out.println("Primer indice de 'Winni': " + list.indicealprimerbuscado("Winni"));
21
System.out.println("Primer indice de 'Winni': " + list.indicealultimobuscado("Winni"));
//Eliminando elementos de la lista a partir de un indice - MÉTODO elimina()
System.out.println("nnELIMINANDO EL ELEMENTO DE LA POSICIÓN 4");
System.out.println("nValor elimindo: " + list.elimina(3));
list.mostrarLista();
//Cambiando los datos de un elemento de la lista a partir de un indice - MÉTODO set()
list.set(2, "Jack");
System.out.println("nnCAMBIANDO LOS DATOS DEL ELEMENTO 3");
list.mostrarLista();
//MÉTODO addAll()
System.out.println("nnANEXANDO LA LISTA DE PAISES");
list.addAll(paises);
list.mostrarLista();
//MÉTODO contains()
System.out.println("nnCOMPROBANDO QUE LA LISTA CONTENGA AL ELEMENTO
'Winni'");
if (list.contains("Winni"))
System.out.println("El nombre SÍ se encuentra");
else
System.out.println("El nombre NO se encuentra");
22
//MÉTODO contains()
System.out.println("nCOMPROBANDO QUE LA LISTA CONTENGA A TODA LA LISTA
capitales'");
if (list.containsAll(capitales))
System.out.println("SÍ contiene todos los elementos");
else
System.out.println("NO contiene a todos los elementos");
//MÉTODO remove() e insertarFinal()
System.out.println("nnREMOVIENDO EL ELEMENTO 'Venezuela'");
list.remove("Venezuela");
System.out.println("INSERTANDO AL FINAL AL ELEMENTO 'Buenos Aires'");
list.insertarFinal("Buenos Aires");
System.out.println("INSERTANDO AL INICIO AL ELEMENTO 'Lima'");
list.insertarInicio("Lima");
System.out.println("nLISTA ACTUALIZADA");
list.mostrarLista();
//MÉTODO removeAll()
System.out.println("nnREMOVIENDO TODAS LAS CAPITALES");
list.removeAll(capitales);
System.out.println("LISTA ACTUALIZADA");
list.mostrarLista();
//MÉTODO retainsAll()
23
System.out.println("nnRETENIENDO SOLO A LOS ELEMENTOS DE LA LISTA 'personas'");
list.retainAll(personas);
System.out.println("LISTA ACTUALIZADA");
list.mostrarLista();
//MÉTODO toArray()
Object[] ciudades = list.toArray();
System.out.println("nnMOSTRANDO LOS ELEMENTOS COMO UN ARRAY DE OBJETOS
DE LA CLASE Object");
for (int i = 0; i < ciudades.length; i++) {
System.out.print(ciudades[i].toString() + " ");
}
//MÉTODO toArray(T[] a)
String[] nombrePrueba = list.toArray(new String[8]);
System.out.println("nnMOSTRANDO LOS ELEMENTOS COMO UN ARRAY DE OBJETOS
DE LA CLASE GENÉRICA");
for (int i = 0; i < nombrePrueba.length; i++) {
System.out.print(nombrePrueba[i] + " ");
}
System.out.println("nnANEXANDO LOS ELEMENTOS 'Cordoba'-al inicio y al final");
list.insertarInicio("Cordoba");
list.insertarFinal("Cordoba");
list.mostrarLista();
24
//MÉTODO eleminarPrimero() y eliminarUltimo()
System.out.println("nnREMOVIENDO EL PRIMER Y ÚLTIMO ELEMENTO");
list.eliminarPrimero();
list.eliminarUltimo();
list.mostrarLista();
//MÉTODO clear()
System.out.println("nnUTILIZANDO EL MÉTODO CLEAR PARA QUITAR TODOS LOS
ELEMENTOS DE LA LISTA");
System.out.println("n");
list.clear();
list.mostrarLista();
}
}
25
IMAGENES DE EJECUCIÓN
FIGURA 1
26
FIGURA 2
FIGURA 3
27
FIGURA 4
FIGURA 5

Más contenido relacionado

Similar a Implementación-lista-enlazada-genérica

Unidad iii Pilas y colas
Unidad iii Pilas y colasUnidad iii Pilas y colas
Unidad iii Pilas y colasCecilia Loeza
 
Estructura de datos I Primera Parte
Estructura de datos I Primera ParteEstructura de datos I Primera Parte
Estructura de datos I Primera Partecarpio
 
Informe tecnico u 5-victor uex
Informe tecnico u 5-victor uexInforme tecnico u 5-victor uex
Informe tecnico u 5-victor uexvictoruex
 
Informe metodos de ordenamiento
Informe metodos de ordenamientoInforme metodos de ordenamiento
Informe metodos de ordenamientoeliezerbs
 
Informe metodos de ordenamiento
Informe metodos de ordenamientoInforme metodos de ordenamiento
Informe metodos de ordenamientoeliezerbs
 
Taller de repaso de metodos y arreglos
Taller de repaso de metodos y arreglosTaller de repaso de metodos y arreglos
Taller de repaso de metodos y arreglosDiroplan
 
Estructuradatospilasycolas 121106170754-phpapp02
Estructuradatospilasycolas 121106170754-phpapp02Estructuradatospilasycolas 121106170754-phpapp02
Estructuradatospilasycolas 121106170754-phpapp02Z Karina Hernandez A
 
8 Listas Encadenadas 2a Parte
8 Listas Encadenadas 2a Parte8 Listas Encadenadas 2a Parte
8 Listas Encadenadas 2a ParteUVM
 
C:\fakepath\j otion
C:\fakepath\j otionC:\fakepath\j otion
C:\fakepath\j otionsena
 
Funcionamiento de un pila
Funcionamiento de un pilaFuncionamiento de un pila
Funcionamiento de un pilajefer
 

Similar a Implementación-lista-enlazada-genérica (20)

Unidad iii Pilas y colas
Unidad iii Pilas y colasUnidad iii Pilas y colas
Unidad iii Pilas y colas
 
Busqueda
BusquedaBusqueda
Busqueda
 
Estructura de datos I Primera Parte
Estructura de datos I Primera ParteEstructura de datos I Primera Parte
Estructura de datos I Primera Parte
 
Informe tecnico u 5-victor uex
Informe tecnico u 5-victor uexInforme tecnico u 5-victor uex
Informe tecnico u 5-victor uex
 
UII - AV
UII - AVUII - AV
UII - AV
 
Informe metodos de ordenamiento
Informe metodos de ordenamientoInforme metodos de ordenamiento
Informe metodos de ordenamiento
 
Informe metodos de ordenamiento
Informe metodos de ordenamientoInforme metodos de ordenamiento
Informe metodos de ordenamiento
 
Codigo ejercicios
Codigo ejerciciosCodigo ejercicios
Codigo ejercicios
 
7
77
7
 
Taller de repaso de metodos y arreglos
Taller de repaso de metodos y arreglosTaller de repaso de metodos y arreglos
Taller de repaso de metodos y arreglos
 
Unidad II practica III
Unidad II   practica IIIUnidad II   practica III
Unidad II practica III
 
Estructura datos pilas y colas
Estructura datos pilas y colasEstructura datos pilas y colas
Estructura datos pilas y colas
 
Estructuradatospilasycolas 121106170754-phpapp02
Estructuradatospilasycolas 121106170754-phpapp02Estructuradatospilasycolas 121106170754-phpapp02
Estructuradatospilasycolas 121106170754-phpapp02
 
Estructura de datos pilas y colas
Estructura de datos pilas y colasEstructura de datos pilas y colas
Estructura de datos pilas y colas
 
8 Listas Encadenadas 2a Parte
8 Listas Encadenadas 2a Parte8 Listas Encadenadas 2a Parte
8 Listas Encadenadas 2a Parte
 
C:\fakepath\j otion
C:\fakepath\j otionC:\fakepath\j otion
C:\fakepath\j otion
 
Taller 1 6
Taller 1 6Taller 1 6
Taller 1 6
 
Taller 1 6
Taller 1 6Taller 1 6
Taller 1 6
 
Programacion ii
Programacion iiProgramacion ii
Programacion ii
 
Funcionamiento de un pila
Funcionamiento de un pilaFuncionamiento de un pila
Funcionamiento de un pila
 

Último

Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxProcesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxJuanPablo452634
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMarceloQuisbert6
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaXimenaFallaLecca1
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)ssuser563c56
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxEduardoSnchezHernnde5
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAJAMESDIAZ55
 
CLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxCLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxbingoscarlet
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfMikkaelNicolae
 
Clase 2 Revoluciones Industriales y .pptx
Clase 2 Revoluciones Industriales y .pptxClase 2 Revoluciones Industriales y .pptx
Clase 2 Revoluciones Industriales y .pptxChristopherOlave2
 
Presentación electricidad y magnetismo.pptx
Presentación electricidad y magnetismo.pptxPresentación electricidad y magnetismo.pptx
Presentación electricidad y magnetismo.pptxYajairaMartinez30
 
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASDOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASPersonalJesusGranPod
 
Residente de obra y sus funciones que realiza .pdf
Residente de obra y sus funciones que realiza  .pdfResidente de obra y sus funciones que realiza  .pdf
Residente de obra y sus funciones que realiza .pdfevin1703e
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfmatepura
 
presentacion medidas de seguridad riesgo eléctrico
presentacion medidas de seguridad riesgo eléctricopresentacion medidas de seguridad riesgo eléctrico
presentacion medidas de seguridad riesgo eléctricoalexcala5
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfAntonioGonzalezIzqui
 
aCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.pptaCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.pptCRISTOFERSERGIOCANAL
 
hitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxhitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxMarcelaArancibiaRojo
 
Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajasjuanprv
 
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAINTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAJOSLUISCALLATAENRIQU
 

Último (20)

Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxProcesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principios
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptx
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
 
CLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxCLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptx
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
 
Clase 2 Revoluciones Industriales y .pptx
Clase 2 Revoluciones Industriales y .pptxClase 2 Revoluciones Industriales y .pptx
Clase 2 Revoluciones Industriales y .pptx
 
Presentación electricidad y magnetismo.pptx
Presentación electricidad y magnetismo.pptxPresentación electricidad y magnetismo.pptx
Presentación electricidad y magnetismo.pptx
 
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASDOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
 
Residente de obra y sus funciones que realiza .pdf
Residente de obra y sus funciones que realiza  .pdfResidente de obra y sus funciones que realiza  .pdf
Residente de obra y sus funciones que realiza .pdf
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdf
 
presentacion medidas de seguridad riesgo eléctrico
presentacion medidas de seguridad riesgo eléctricopresentacion medidas de seguridad riesgo eléctrico
presentacion medidas de seguridad riesgo eléctrico
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
 
aCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.pptaCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.ppt
 
hitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxhitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docx
 
Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajas
 
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAINTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
 
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdfVALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
 

Implementación-lista-enlazada-genérica

  • 1. UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS UNIVERSIDAD DEL PERÚ, DECANA DE AMÉRICA FACULTAD DE INGENIERÍA DE SISTEMAS E INFORMATICA ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS ASIGNATURA: ESTRUCUTRA DE DATOS “Actividad 3 – Semana 1” SECCIÓN: N° 01 DOCENTE: Javier Elmer Cabrera Díaz SEMESTRE: Quinto ESTUDIANTES: Jack Marlon Valqui Trujillo LIMA – PERÚ 2022 “Año del Fortalecimiento de la Soberanía Nacional”
  • 2. 2 CÓDIGO FUENTE Clases Nodo package semana2.tareas; public class Nodo <T>{ T elemento; Nodo<T> next; public Nodo(T e){ elemento=e; next = null; } } Clases MiListaEnlazada package semana2.tareas; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Iterator; public class MiListaEnlazada<T> implements MiLista<T>{ public Nodo<T> cabeza = null; public Nodo<T> ultimo = null;
  • 3. 3 public int longi = 0; //MÉTODOS PROPIOS DE CLASE //LISTO public MiListaEnlazada(T[] e){ for (int i = 0; i < e.length; i++) insertarInicio(e[i]); } //LISTO public T getPrimero(){ if(cabeza!=null) return this.cabeza.elemento; return null; } //LISTO public T getUltimo(){ if(ultimo!=null) return this.ultimo.elemento; return null; } //LISTO public void insertarInicio(T e){ Nodo<T> nuevo = new Nodo(e); nuevo.next = cabeza; cabeza = nuevo; longi++;
  • 4. 4 if(cabeza.next==null) ultimo= nuevo; } //LISTO public void insertarFinal(T e){ if(cabeza != null){ Nodo<T> puntero = cabeza; Nodo<T> nuevo = new Nodo(e); while (puntero.next != null) { puntero = puntero.next; } puntero.next = nuevo; ultimo= nuevo; longi++; }else{ insertarInicio(e); } } //LISTO public void eliminarPrimero(){ if(cabeza!=null){ Nodo<T> puntero = cabeza; cabeza = cabeza.next; puntero.next = null; longi--; }
  • 5. 5 } //LISTO public void eliminarUltimo(){ if(cabeza!=null){ if(cabeza.next == null){ cabeza =null; ultimo = null; }else{ Nodo<T> puntero = cabeza; while (puntero.next.next != null) { puntero = puntero.next; } ultimo = puntero; puntero.next = null; } longi--; } } //LISTO public void mostrarLista(){ Nodo<T> puntero = cabeza; while(puntero!= null){ System.out.print(puntero.elemento+"->"); puntero = puntero.next; } }
  • 6. 6 //MÉTODOS DADOS POR LA INTERFACE MiLista @Override //LISTO public void add(int indice, T e) { if(indice==0 && cabeza !=null) insertarInicio(e); else if(indice<longi && indice>0){ Nodo<T> puntero = cabeza; Nodo<T> nuevo = new Nodo(e); int contador=0; while(contador<(indice-1) && puntero.next.next!= null){ puntero = puntero.next; contador++; } nuevo.next = puntero.next; puntero.next = nuevo; longi++; } else System.out.println("Indice fuera del rango posible"); } @Override //LISTO
  • 7. 7 public T get(int indice) { if(indice==0) return cabeza.elemento; else if(indice<longi && indice>0){ Nodo<T> puntero = cabeza; int contador = 0; while (contador < indice && puntero.next != null) { puntero = puntero.next; contador++; } return puntero.elemento; }else{ System.out.println("Indice fuera de los permitidos"); return null; } } @Override//LISTO public int indicealultimobuscado(T e) { int indice=-1; if(cabeza!=null){ Nodo<T> puntero = cabeza; int contador=0; while(puntero.next!=null){
  • 8. 8 if(puntero.elemento == e) indice=contador+1; contador++; puntero = puntero.next; } } return indice; } @Override//LISTO public int indicealprimerbuscado(T e) { int indice=-1; if(cabeza!=null){ Nodo<T> puntero = cabeza; int contador=0; while(puntero !=null){ if(puntero.elemento == e){ indice=contador+1; return indice; } contador++;
  • 9. 9 puntero = puntero.next; } } return indice; } @Override //LISTO public T elimina(int indice) { if(cabeza!=null){ if(indice==0){ Nodo<T> temp = cabeza; cabeza=cabeza.next; temp.next=null; longi--; return temp.elemento; }else if(indice<longi && indice>0){ Nodo<T> puntero = cabeza; int contador = 0; while (contador < (indice - 1)) { puntero = puntero.next; contador++; } Nodo<T> temp = puntero.next;
  • 10. 10 puntero.next = temp.next; temp.next= null; longi--; return temp.elemento; }else{ System.out.println("Elemento fuera de rango"); } } return null; } @Override //LISTO public void set(int indice,T e) { if(cabeza!=null){ if(indice<longi && indice>=0){ Nodo<T> puntero = cabeza; int contador = 0; while (contador < indice && puntero.next != null) { contador++; puntero = puntero.next; } puntero.elemento = e; } } }
  • 11. 11 //MÉTODOS DE LA INTERFAZ COLLECTION @Override //LISTO public boolean addAll(Collection<? extends T> c){ ArrayList<T> elemts = new ArrayList<>(c); for (int i = 0; i <elemts.size(); i++) { insertarFinal(elemts.get(i)); } return true; } @Override public void clear(){ while(cabeza !=null){ eliminarUltimo(); } } @Override//LISTO public boolean contains(Object c){ boolean contiene = false; if(cabeza!= null){ Nodo<T> puntero = cabeza; while (puntero != null) { if (puntero.elemento.equals(c)) {
  • 12. 12 contiene = true; return contiene; } puntero = puntero.next; } } return contiene; } @Override//LISTO public boolean containsAll(Collection<?> c){ int contador =0; T valor; if(cabeza!= null){ Nodo<T> puntero = cabeza; ArrayList<T> comparador = (ArrayList<T>) c; for (int i = 0; i < comparador.size(); i++) { valor = comparador.get(i); if(contains(valor)) contador++; } return comparador.size() == contador; } return false; }
  • 13. 13 @Override//LISTO public boolean remove(Object o){ if(contains(o)){ T element = (T) o; T eliminado; int indice = indicealprimerbuscado(element)-1; eliminado = elimina(indice); System.out.println("Elemento eliminado: "+eliminado); return true; } return false; } @Override//LISTO public boolean removeAll(Collection<?> c){ ArrayList<T> elemt = (ArrayList) c; boolean repetir = true; for (int i = 0; i < elemt.size(); i++) { while(repetir){ repetir = remove(elemt.get(i)); } repetir = true; }
  • 14. 14 return true; } @Override//LISTO public boolean retainAll(Collection<?> c){ ArrayList<T> elemt = (ArrayList) c; ArrayList<T> eliminar = new ArrayList<>(); Nodo<T> puntero = cabeza; boolean aEliminar = true; T valor; while (puntero != null) { valor = puntero.elemento; for (int i = 0; i < elemt.size(); i++) { if(valor.equals(elemt.get(i))){ aEliminar = false; break; } } if(aEliminar) eliminar.add(valor); puntero = puntero.next; aEliminar = true; } removeAll(eliminar);
  • 15. 15 return true; } @Override//LISTO public Object[] toArray(){ Object[] a = new Object[longi]; Nodo<T> puntero = cabeza; for (int i = 0; i < longi ; i++) { a[i] = puntero.elemento; puntero = puntero.next; } return a; } @Override//LISTO public <E> E[] toArray(E[] a){ Object[] alterno = toArray() ; //Crea un nuevo arreglo del tiempo en tiempo de ejecución, pero con mi contenido: if (a.length < longi) return (E[]) Arrays.copyOf(alterno, longi, a.getClass()); System.arraycopy(alterno, 0, a, 0, longi); if (a.length > longi) a[longi] = null; return a;
  • 16. 16 } //NO ESPECIFICADOS POR LE PROFESOR @Override public int size() { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } @Override public Iterator<T> iterator() { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } } } Interface MiLista package semana2.tareas; import java.util.ArrayList; import java.util.Collection; public interface MiLista<E> extends Collection<E> { //añadir un nuevo elemento a la lista dado el indice
  • 17. 17 public void add(int indice, E e); //devuelve el elemento del indice dado public E get(int indice); //devolver el indice del último elemento de la lista igual al buscado, sino devolver -1 public int indicealultimobuscado(E e); //devolver el indice del primer elemento de la lista igual al buscado, sino devolver -1 public int indicealprimerbuscado(E e); //elminar un elemento de una posición, devolver el elemento eliminado public E elimina(int indice); //Modifica el elemento en función al indice public void set(int indice, E e); //añadir al final @Override public default boolean add(E e){ add(size(), e); return true; }
  • 18. 18 @Override public default boolean isEmpty(){ return size()==0; } } Clase Main package semana2.tareas; import java.util.ArrayList; public class C_MiLista { public static void main(String[] args) { //DECLARACIÓN DE OBJETOS A UTILIZAR String[] alumnos = {"Jack", "Jimmy", "Jheus", "Jean"}; MiListaEnlazada<String> list = new MiListaEnlazada<>(alumnos); ArrayList<String> paises = new ArrayList<String>(); paises.add("Perú"); paises.add("Venezuela"); paises.add("Argentina"); paises.add("Brazil");
  • 19. 19 ArrayList<String> capitales = new ArrayList<String>(); capitales.add("Lima"); capitales.add("Caracas"); capitales.add("Buenos Aires"); capitales.add("Brazilia"); ArrayList<String> personas = new ArrayList<String>(); personas.add("Jheus"); personas.add("Jack"); personas.add("Winni"); //COMPROBACIÓN DE LOS MÉTODOS DESCRITOS //Mostranlo la lista inicial System.out.println("LISTA INICIALIZADA"); list.mostrarLista(); //MÉTODOS getPrimero y getUltimo y su Longitud System.out.println("nnVARIABLES DE LA CLASE MiListaEnlazada"); System.out.println(" PRIMERO: " + list.getPrimero()); System.out.println(" ULTIMO: " + list.getUltimo()); System.out.println(" LONGITUD: " + list.longi);
  • 20. 20 //Eliminando el último elemento - MÉTODO eliminarUltimo()- y mostramos la lista actual list.eliminarUltimo(); System.out.println("nLISTA ACTUALIZADA"); list.mostrarLista(); System.out.println("nnVARIABLES DE LA CLASE MiListaEnlazada ACTUALIZADOS"); System.out.println(" PRIMERO: " + list.getPrimero()); System.out.println(" ULTIMO: " + list.getUltimo()); System.out.println(" LONGITUD: " + list.longi); //Obtenemos un elemento particualar de la lista - MÉTODO get() System.out.println("nELEMENTOS PARTICULARES DE LA LISTA"); System.out.println(" Elmento 1: " + list.get(0)); System.out.println(" Elmento 2: " + list.get(1)); System.out.println(" Elmento 3: " + list.get(2)); //Anexando un elemento a la Lista a partir del indice - MÉTODO add() list.add(2, "Winni"); list.add(0, "Winni"); System.out.println("nANEXANDO LOS NUEVOS ELEMENTOS"); list.mostrarLista(); //Buscando el indice un elemento a la Lista - MÉTODOS indicealultimobuscado() y indicealprimerbuscado() System.out.println("nnBUSCANDO EL ÍNDICE DEL PRIMER Y ÚLTIMO ELEMENTO"); System.out.println("Primer indice de 'Winni': " + list.indicealprimerbuscado("Winni"));
  • 21. 21 System.out.println("Primer indice de 'Winni': " + list.indicealultimobuscado("Winni")); //Eliminando elementos de la lista a partir de un indice - MÉTODO elimina() System.out.println("nnELIMINANDO EL ELEMENTO DE LA POSICIÓN 4"); System.out.println("nValor elimindo: " + list.elimina(3)); list.mostrarLista(); //Cambiando los datos de un elemento de la lista a partir de un indice - MÉTODO set() list.set(2, "Jack"); System.out.println("nnCAMBIANDO LOS DATOS DEL ELEMENTO 3"); list.mostrarLista(); //MÉTODO addAll() System.out.println("nnANEXANDO LA LISTA DE PAISES"); list.addAll(paises); list.mostrarLista(); //MÉTODO contains() System.out.println("nnCOMPROBANDO QUE LA LISTA CONTENGA AL ELEMENTO 'Winni'"); if (list.contains("Winni")) System.out.println("El nombre SÍ se encuentra"); else System.out.println("El nombre NO se encuentra");
  • 22. 22 //MÉTODO contains() System.out.println("nCOMPROBANDO QUE LA LISTA CONTENGA A TODA LA LISTA capitales'"); if (list.containsAll(capitales)) System.out.println("SÍ contiene todos los elementos"); else System.out.println("NO contiene a todos los elementos"); //MÉTODO remove() e insertarFinal() System.out.println("nnREMOVIENDO EL ELEMENTO 'Venezuela'"); list.remove("Venezuela"); System.out.println("INSERTANDO AL FINAL AL ELEMENTO 'Buenos Aires'"); list.insertarFinal("Buenos Aires"); System.out.println("INSERTANDO AL INICIO AL ELEMENTO 'Lima'"); list.insertarInicio("Lima"); System.out.println("nLISTA ACTUALIZADA"); list.mostrarLista(); //MÉTODO removeAll() System.out.println("nnREMOVIENDO TODAS LAS CAPITALES"); list.removeAll(capitales); System.out.println("LISTA ACTUALIZADA"); list.mostrarLista(); //MÉTODO retainsAll()
  • 23. 23 System.out.println("nnRETENIENDO SOLO A LOS ELEMENTOS DE LA LISTA 'personas'"); list.retainAll(personas); System.out.println("LISTA ACTUALIZADA"); list.mostrarLista(); //MÉTODO toArray() Object[] ciudades = list.toArray(); System.out.println("nnMOSTRANDO LOS ELEMENTOS COMO UN ARRAY DE OBJETOS DE LA CLASE Object"); for (int i = 0; i < ciudades.length; i++) { System.out.print(ciudades[i].toString() + " "); } //MÉTODO toArray(T[] a) String[] nombrePrueba = list.toArray(new String[8]); System.out.println("nnMOSTRANDO LOS ELEMENTOS COMO UN ARRAY DE OBJETOS DE LA CLASE GENÉRICA"); for (int i = 0; i < nombrePrueba.length; i++) { System.out.print(nombrePrueba[i] + " "); } System.out.println("nnANEXANDO LOS ELEMENTOS 'Cordoba'-al inicio y al final"); list.insertarInicio("Cordoba"); list.insertarFinal("Cordoba"); list.mostrarLista();
  • 24. 24 //MÉTODO eleminarPrimero() y eliminarUltimo() System.out.println("nnREMOVIENDO EL PRIMER Y ÚLTIMO ELEMENTO"); list.eliminarPrimero(); list.eliminarUltimo(); list.mostrarLista(); //MÉTODO clear() System.out.println("nnUTILIZANDO EL MÉTODO CLEAR PARA QUITAR TODOS LOS ELEMENTOS DE LA LISTA"); System.out.println("n"); list.clear(); list.mostrarLista(); } }