Listas enlazadas ppt

Download Report

Transcript Listas enlazadas ppt

Estructuras de datos y algoritmos
Oscar Bedoya.
[email protected]
http://eisc.univalle.edu.co/~oscarbed/Estructuras/
Edificio 331, 2º piso, E.I.S.C.
Listas enlazadas
Definición
Una lista enlazada también recibe el nombre de "lista
concatenada", "lista eslabonada" o "lista lineal".
Una lista enlazada es una colección de elementos
llamados nodos. Cada nodo contiene un dato y una
referencia al siguiente nodo.
Listas enlazadas
dato
23
siguiente
dato
siguiente
99
Cada nodo se representa por medio de dos campos:
Campo dato: contiene el valor del nodo
Campo siguiente: indica cuál es el nodo con el que se enlaza
Listas enlazadas
Lista enlazada con 3 nodos.
Los nodos tienen datos de tipo
entero.
23
6
99
Nodo 1
Nodo 2
Nodo 3
Dato: 23
Dato: 6
Dato: 99
Siguiente: Nodo 2
Siguiente: Nodo 3
Siguiente: null
(indica que es el fin de
la lista)
Listas enlazadas
Lista enlazada con 3 nodos.
Los nodos tienen datos de tipo
String.
oscar
kate
sarah
Nodo 1
Nodo 2
Nodo 3
Dato: oscar
Dato: kate
Dato: sarah
Siguiente: Nodo 2
Siguiente: Nodo 3
Siguiente: null
Listas enlazadas
Definición
Una lista enlazada es una estructura de datos dinámica
que permite almacenar cualquier cantidad de nodos
Las operaciones sobre una lista enlazada son:
•Crear lista
•Insertar nodo al inicio
•Eliminar nodo al inicio
•Imprimir datos
•Es una lista vacía?
Listas enlazadas
Definición
E
A
R
Al primer nodo se le llama cabecera y sirve
como punto de referencia en la lista.
No contiene ningún dato
E
Listas enlazadas
•Crear lista
Al crear una lista, se crea el nodo cabecera.
El nodo cabecera tiene como dato null y como
siguiente null.
Listas enlazadas
•Insertar nodo al inicio( La lista está vacía)
•Se crea un nuevo nodo con el
dato que se desee colocar y con
siguiente null
W
•El campo siguiente del nodo
cabecera pasa de ser null a ser el
nodo que estamos insertado
Listas enlazadas
•Insertar nodo al inicio( La lista no está vacía)
W
A
W
•Se crea un nuevo nodo con el dato que se desee colocar y en su campo siguiente
se establece el siguiente del nodo cabecera
•Al nodo cabecera se le asigna como siguiente el nodo que estamos insertando
Listas enlazadas
•Eliminar nodo al inicio
A
W
W
•Al nodo cabecera se le asigna como siguiente, el siguiente del primer nodo
Listas enlazadas
•Imprimir datos
Listas enlazadas
•Está una lista vacía?
Cuando la lista está vacía el campo siguiente de la
cabecera es null
Listas enlazadas
class Nodo{
Object dato;
Nodo siguiente;
Nodo(Object o)
{
dato=o;
siguiente=null;
}
Nodo(Object o, Nodo n)
{
dato=o;
siguiente=n;
}
}
Cada nodo se
representa por medio
de dos campos:
Campo dato: contiene
el valor del nodo
Campo siguiente:
indica cuál es el nodo
con el que se enlaza
Listas enlazadas
class Lista{
Nodo cabecera;
Lista()
{
cabecera=new Nodo(null);
}
. . .
}
Crear lista
Al crear una lista, se
crea el nodo cabecera.
El nodo cabecera tiene
como dato null y como
siguiente null.
Listas enlazadas
public boolean estaVacia(){
if (cabecera.siguiente==null)
•Está una lista
vacía?
{
return true;
}
else
{
return false;
}
}
Cuando la lista está
vacía el campo
siguiente de la
cabecera es null
Listas enlazadas
void insertar(Object o)
{
Insertar nodo al inicio
( La lista está vacía)
Nodo nuevo=new Nodo(null);
if ( estaVacia() )
{
nuevo=new Nodo(o);
nuevo.siguiente=null;
cabecera.siguiente=nuevo;
}
•Se crea un nuevo nodo con el
dato que se desee colocar y con
siguiente null
•El campo siguiente del nodo
cabecera pasa de ser null a ser el
nodo que estamos insertado
Listas enlazadas
if ( estaVacia() )
Insertar nodo al inicio
( La lista no está vacía)
{
nuevo=new Nodo(o);
nuevo.siguiente=null;
cabecera.siguiente=nuevo;
}
else
dato que se desee colocar y en
su campo siguiente se
establece el siguiente del nodo
cabecera
{
•Al nodo cabecera se le asigna
nuevo=new Nodo(o);
como siguiente el nodo que
estamos insertando
nuevo.siguiente=cabecera.siguiente;
cabecera.siguiente=nuevo;
}
}
•Se crea un nuevo nodo con el
Listas enlazadas
public void eliminar()
{
Nodo borrar=cabecera.siguiente;
cabecera.siguiente=borrar.siguiente;
}
Eliminar nodo al inicio
•Al nodo cabecera se le asigna como
siguiente, el siguiente del primer nodo
Listas enlazadas
public void imprimir()
{
Nodo actual=new Nodo(null);
if (estaVacia())
System.out.println(“La lista esta vacia");
else
{
actual=cabecera;
System.out.println("\n");
while( actual != null){
System.out.print( actual.dato );
actual=actual.siguiente;
}
}
}
•Imprimir datos
Listas enlazadas