0% encontró este documento útil (0 votos)
20 vistas8 páginas

Laboratorio Nro. 05

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
20 vistas8 páginas

Laboratorio Nro. 05

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 8

UNIVERSIDAD NACIONAL DE SAN CRISTÓBAL DE HUAMANGA

ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS


ESTRUCTURA DE DATOS (IS-241)

LABORATORIO NRO. 05

LISTAS SIMPLES ENLAZADAS


OPERACIONES EN LISTAS

1. OBJETIVOS DE LABORATORIO
1.1. Implementar lista simple enlazadas
1.2. Aplicar la estructura Lista para almacenar datos
1.3. Aprender a definir y manipular estructuras de listas simples enlazadas.
1.4. Realizar operaciones con listas simples enlazadas.

2. REVISIÓN TEÓRICA
2.1. Clases de Autorreferencia

Una clase de autorreferencia contiene un miembro de referencia que se refiere a un


objeto del mismo tipo de clase:

Imagen Nro. 01: Nodo simple genérico.

Los objetos de autorreferencia pueden vincularse entre sí para formar estructuras de datos
útiles como listas, pilas y árboles.

Figura Nro. 01: Estructura de un nodo

Docentes:
Ing. Jennifer Rocío Pillaca De La Cruz
Ing. Fredy Barrientos
Ing. Alberto Lapa
UNIVERSIDAD NACIONAL DE SAN CRISTÓBAL DE HUAMANGA
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS
ESTRUCTURA DE DATOS (IS-241)
2.2. Asignación dinámica de memoria
El operador new es fundamental para la asignación dinámica de memoria. Este operador
tiene como argumento el tipo del objeto al que se le asignara memoria dinámicamente y
devuelve una referencia al objeto de ese tipo.

Asigna el número apropiado de bytes para almacenar un nodo y almacena una referencia
a esta memoria en nodoToAdd.

Si no hay memoria disponible, new lanza una excepción de memoria agotada


(OutOfMemoryException).

Donde: “d” es el dato del objeto nodo.

2.3. Listas simples


Una lista simple enlazada es una colección lineal de objetos de una clase de
autorreferencia llamada nodos y conectados mediante enlaces de referencia. Accedemos
a una lista enlazada a través de una referencia al primer nodo de la lista.

Accedemos a los nodos subsecuentes a través del miembro de referencia del enlace
almacenado en cada nodo. La referencia de enlace del último nodo se pone en null para
marcar el final de la lista.

Se componen de dos partes (campos).


La primera parte: Contiene la información, valor de tipo genérico (Dato, TipoElemento,
Info, etc).
La segunda parte: Es un enlace (referencia o sgte) que apunta (enlaza) al siguiente
elemento de la lista.

Figura Nro. 02: Lista simple enlazada

Docentes:
Ing. Jennifer Rocío Pillaca De La Cruz
Ing. Fredy Barrientos
Ing. Alberto Lapa
UNIVERSIDAD NACIONAL DE SAN CRISTÓBAL DE HUAMANGA
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS
ESTRUCTURA DE DATOS (IS-241)
2.4. OPERACIONES EN LISTAS ENLAZADAS
La implementación del TAD de una lista requiere, primer lugar declarar la clase nodo, en
las que se combinaran sus dos partes: el dato y un enlace (referencia). A demás la clase
lista con sus operaciones y el atributo con la cabeza de la lista.
Las operaciones son los siguientes:
a) Inicialización o creación
b) Insertar un elemento en la lista
c) Remover elemento de una lista
d) Buscar elemento de una lista
e) Recorrer la lista

3. DESARROLLO DE LABORATORIO
3.1. Ejercicios resueltos de listas.

Cree un nuevo proyecto llamado Laboratorio 5, cree un paquete llamado ListaSimple.

A. Cree la clase Nodo auto referenciado, para realizar una la lista simple enlazada.

Cree los métodos accesores y modificadores get() y set() en la clase Nodo.

Explique la clase Nodo.

Docentes:
Ing. Jennifer Rocío Pillaca De La Cruz
Ing. Fredy Barrientos
Ing. Alberto Lapa
UNIVERSIDAD NACIONAL DE SAN CRISTÓBAL DE HUAMANGA
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS
ESTRUCTURA DE DATOS (IS-241)

B. Cree la clase ListaSimple, cree un constructor de la clase ListaSimple.

package ListaSimple;

public class ListaSimple <Tipo>{


Nodo primero;

public ListaSimple() {
primero=null;
}
}

En la clase ListaSimple cree el método “insertarInicio”, agregará los elementos al inicio


de la lista simple enlazada.

//Metodo para agregar un nodo al incio de la lista


public ListaSimple insertarInicio(Tipo elem){
Nodo nuevo=new Nodo(elem);
if (primero!=null )
nuevo.setSiguiente(primero);
primero=nuevo;
return this;
}

Explique el método insertarInicio.

En la clase ListaSimple cree el método “toStream”, este método recorre la lista y muestra
todos los elementos de la lista simplemente enlazada.

public String toStream(){


String salida="";
Nodo actual;

for(actual=primero; actual!=null; actual=actual.getSiguiente() )


salida=salida+"-->"+actual.getDato();
return salida="lista "+salida;
}

Docentes:
Ing. Jennifer Rocío Pillaca De La Cruz
Ing. Fredy Barrientos
Ing. Alberto Lapa
UNIVERSIDAD NACIONAL DE SAN CRISTÓBAL DE HUAMANGA
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS
ESTRUCTURA DE DATOS (IS-241)
Explique el método toStream.

En la clase ListaSimple cree el método “insertarFinal”, este método agregará los


elementos al final de la lista simple enlazada.

public ListaSimple insertarFinal(Tipo elem){


Nodo nuevo=new Nodo(elem);
Nodo actual=primero;
if (primero!=null){
while(actual.getSiguiente()!=null)
actual=actual.getSiguiente();
actual.setSiguiente(nuevo);
}

else
primero=nuevo;
return this;
}

Explique el método insertarFinal.

En la clase ListaSimple cree el método “eliminarInicio”, elimina el elementos al incio de


la lista simple enlazada.

//Metodo para eliminar al inicio de la lista


public ListaSimple eliminarInicio(){

Nodo actual=primero;
if (primero!=null ){
primero=actual.getSiguiente();
actual.setSiguiente(null);
}
return this;

Docentes:
Ing. Jennifer Rocío Pillaca De La Cruz
Ing. Fredy Barrientos
Ing. Alberto Lapa
UNIVERSIDAD NACIONAL DE SAN CRISTÓBAL DE HUAMANGA
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS
ESTRUCTURA DE DATOS (IS-241)
Explique el método eliminarInicio.

En la clase ListaSimple cree el método “eliminarFinal”, elimina el elemento que se


encuentra al final de la lista simplemente enlazada

public ListaSimple eliminarFinal(){


if(primero!=null){
Nodo actual=primero;
while(actual.getSiguiente().getSiguiente()!=null)
actual=actual.getSiguiente();
actual.setSiguiente(null);
}
else
primero=null;
return this;
}

Explique el método eliminarFinal.

C. Cree una clase llamado PrincipalListaSimple y digita el siguiente código.

package ListaSimple;

import java.util.Scanner;

public class PrincipalListasimple {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);


ListaSimple listasimple = new ListaSimple();
int op = 0;
int d;
do {
System.out.println("\n MENU DE OPCIONES");
System.out.println("[1] Agregar un elemento al Inicio de la Lista");
Docentes:
Ing. Jennifer Rocío Pillaca De La Cruz
Ing. Fredy Barrientos
Ing. Alberto Lapa
UNIVERSIDAD NACIONAL DE SAN CRISTÓBAL DE HUAMANGA
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS
ESTRUCTURA DE DATOS (IS-241)
System.out.println("[2] Mostrar los datos de la lista");
System.out.println("[3] Agregar un elemento al final de la Lista");
System.out.println("[4] Eliminar un elemento al Inicio de la Lista");
System.out.println("[5] Eliminar un elemento al Final de la Lista");
System.out.println("[6] Salir");
System.out.print("INGRESE UNA OPCION: ");
op = sc.nextInt();
switch (op) {
case 1:
System.out.print("Ingrese el elemento: ");
d = sc.nextInt();
listasimple.insertarInicio(d); //Insertando al nodo
break;
case 2:
System.out.println("LISTA DE ELEMENTOS");
System.out.println(listasimple.toStream());
break;
case 3:
System.out.println("INSERTANDO NODO AL FINAL");
System.out.print("Ingrese el elemento: ");
d = sc.nextInt();
listasimple.insertarFinal(d); //Insertando al nodo final de la lista
break;
case 4:
System.out.println("ELIMANDO NODO AL INICIO");
listasimple.eliminarInicio();
break;
case 5:
System.out.println("ELIMANDO NODO AL FINAL ");
listasimple.eliminarFinal();
break;
case 6:
break;
default:
System.out.println("pcion incorrecta");
}

} while (op != 6);


}

Copie la salida:

Docentes:
Ing. Jennifer Rocío Pillaca De La Cruz
Ing. Fredy Barrientos
Ing. Alberto Lapa
UNIVERSIDAD NACIONAL DE SAN CRISTÓBAL DE HUAMANGA
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS
ESTRUCTURA DE DATOS (IS-241)
Explique el resultado.

3.2. Ejercicios propuestos

3.2.1 Realice una estructura para implementar una lista simple enlazada utilizando los
métodos accesores y modificadores (get() y set()), las opciones de la lista simple
enlazada será:
a. Agregar un elemento al Inicio de la Lista
b. Mostrar los datos de la lista
c. Agregar un elemento al final de la Lista
d. Eliminar un elemento al Inicio de la Lista
e. Eliminar un elemento al Final de la Lista
f. Eliminar un elemento determinado de la lista
g. Buscar un elemento en la lista
h. Ordenar la lista
i. Inserta un nuevo elemento luego de haber encontrado un elemento en la lista.

3.2.2 Crear una lista simplemente enlazada y realizar un menú donde pueda hacer lo siguiente:
Agregar, Mostrar, Ingresar al final, ingresar al inicio, mayor numero, menor número,
promedio.

3.2.3 Crear una lista enlazada de números enteros positivos al azar, la inserción se realiza por
el último nodo.

3.2.4 Realizar un programa de una lista simplemente enlazada que pueda cumplir con las
siguientes instrucciones:
a. Añadir un elemento en la posición “n”
b. Delvolver la posición “n” de un elemento
c. Ordenar de forma creciente la lista
d. Verificar si una lista esta ordenada
e. Invertir lista
f. Agregar un elemento en la lista ordenada
h. Mostrar el mayo elemento.
i. Mostrar el menor elemento.
j. Mostrar la suma de los elementos.
k. Mostrar la cantidad de elementos pares.
l. Verificar que no se repita el elemento ingresado.

Docentes:
Ing. Jennifer Rocío Pillaca De La Cruz
Ing. Fredy Barrientos
Ing. Alberto Lapa

También podría gustarte