2. Listas Enlazadas
• Una representación enlazada de un grupo de
elementos de un cierto tipo es una lista
enlazada de nodos, es decir, una
• secuencia de nodos situados en la memoria
dinámica y conectados entre sí
• Ejemplo: lista de enteros {4, 8, 5, 3, 2}
3.
4. • Como se ha visto, un nodo tiene dos atributos:
El dato, de tipo genérico (para poder guardar
cualquier tipo de objeto)
• Una referencia al nodo siguiente.
5. • public class Nodo {
int dato;
• Nodo siguiente;
• public Nodo(int dato) {
this.dato = dato;
this.siguiente = null;
}
• }
6. • Una lista enlazada requiere, como mínimo,
una referencia al primer nodo de la lista:
• Cuando la lista está vacía, el atributo primero
apunta a null:
primero = null;
8. Operaciones básicas con listas
• Crear Lista
• Recorrido de la Lista
• Inserción de un Elemento
• Borrado de un Elemento
• Búsqueda de un Elemento
9. • Lo más eficiente es insertar al principio de la
lista, pues tenemos una referencia al primer
nodo
Ejemplo: Se quiere insertar el elemento “1” en
la siguiente lista:
10. • public void insertarPrimero(int dato)
• {
• //crea un nuevo Nodo
• Nodo nuevoNodo = new Nodo(dato);
• nuevoNodo.siguiente=primero;
• primero=nuevoNodo;
•
11. • public void desplegarLista()
• {
• Nodo actual=primero;
• while (actual!= null)
• {
• System.out.println(“El dato es:”+actual.dato);
• actual= actual.siguiente;
• }
• }
13. • Para insertar nodos a la derecha, es necesario
declarar e inicializar otra variable , en este
caso es último
14. Código ListaEnlazada
Nodo primero; Declaración de las
variables primero y
Nodo ultimo; ultimo
primero=null; Inicializar primero y
ultimo
ultimo=null;
15. Método modificado
public boolean estavacia(){ para que los nodos
return primero==null; se inserten a la
} derecha
public void insertarUltimo (int dato){
//crea un nuevo nodo
NodoLista nuevoNodo=new NodoLista( dato);
if(primero==null){ nuevoNodo.siguiente
nuevoNodo.siguiente=primero; será igual a null en
Se le agrega primero=nuevoNodo; vez de primero
una ultimo=nuevoNodo;
condicion
para que }
inserte a la else{
nuevoNodo.siguiente=null;
derecha
ultimo.siguiente=nuevoNodo;
ultimo=nuevoNodo;
}
}
16. Método para
imprimir
public void desplegarLista(){
Nodoactual=primero;
while(actual!=null){
System.out.println(“”+actual.dato);
actual=actual.siguiente;
}
}
17. do{
System.out.print("Introduce el dato del nodo");
System.out.flush();
Invocación al dato=Integer.parseInt(entrada.readLine());
método
insertarUltimo lista.insertarUltimo(dato);
//insertar nodo a la lista
System.out.print("Deseas seguir insertando datos: SI=1, NO=0");
System.out.flush();
opc=Integer.parseInt(entrada.readLine());
}while(opc==1);
lista.desplegarLista();
20. Tarea:
• Implementar en Java, un menú con las siguientes
operaciones:
• A) Crear lista enlazada
• B) Insertar a la cabeza de la lista
• C) Insertar al final de la lista
• D) Borrar el elemento inicial de la lista
• E)Borrar el último elemento de la lista
• F) Desplegar los elementos de la lista
• Deben validar al borrar elementos de la lista que la
lista no este vacía
21. • Escribir un algoritmo que inserte un
específico elemento de la lista
• Escribir un algoritmo que busque un elemento
en la lista y lo visualice en pantalla, en caso de
no encontrarlo, mandar el mensaje
correspondiente.
• Escribir un algoritmo que borre un elemento
específico de la lista. Ver ejemplo de la
diapositiva siguiente.