Está en la página 1de 21

Estructuras de datos y algoritmos

Oscar Bedoya.
oscarbed@eisc.univalle.edu.co
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 siguiente dato siguiente

23 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 E

Al primer nodo se le llama cabecera y sirve


como punto de referencia en la lista.
No contiene ningún dato
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
•El campo siguiente del nodo
W cabecera pasa de ser null a ser
el nodo que estamos insertado
Listas enlazadas

•Insertar nodo al inicio( La lista no está vacía)

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

•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{
Cada nodo se
Object dato; representa por medio
Nodo siguiente; de dos campos:

Nodo(Object o)
{ Campo dato: contiene
el valor del nodo
dato=o;
siguiente=null; Campo siguiente:
} indica cuál es el nodo
con el que se enlaza
Nodo(Object o, Nodo n)
{
dato=o;
siguiente=n;
}
}
Listas enlazadas

class Lista{ Crear lista


Al crear una lista, se
Nodo cabecera; crea el nodo cabecera.
El nodo cabecera tiene
Lista()
como dato null y como
{ siguiente null.
cabecera=new Nodo(null);
}

. . .
}
Listas enlazadas

public boolean estaVacia(){ •Está una lista


if (cabecera.siguiente==null) vacía?
{
return true;
} Cuando la lista
else
está vacía el
campo siguiente
{
de la cabecera es
return false; null
}
}
Listas enlazadas

void insertar(Object o)
Insertar nodo al inicio
{ ( La lista está vacía)
Nodo nuevo=new Nodo(null);

•Se crea un nuevo nodo con el


if ( estaVacia() ) dato que se desee colocar y con
siguiente null
{
•El campo siguiente del nodo
nuevo=new Nodo(o); cabecera pasa de ser null a ser
nuevo.siguiente=null; el nodo que estamos insertado

cabecera.siguiente=nuevo;
}
Listas enlazadas

if ( estaVacia() )
Insertar nodo al inicio
{
( La lista no está vacía)
nuevo=new Nodo(o);
nuevo.siguiente=null;
•Se crea un nuevo nodo con el
cabecera.siguiente=nuevo; dato que se desee colocar y en
su campo siguiente se establece
}
el siguiente del nodo cabecera
else
•Al nodo cabecera se le asigna
{ como siguiente el nodo que
estamos insertando
nuevo=new Nodo(o);
nuevo.siguiente=cabecera.siguiente;
cabecera.siguiente=nuevo;
}
}
Listas enlazadas

public void eliminar() Eliminar nodo al inicio


{
Nodo borrar=cabecera.siguiente; •Al nodo cabecera se le asigna como
siguiente, el siguiente del primer nodo
cabecera.siguiente=borrar.siguiente;

}
Listas enlazadas

public void imprimir()


{ •Imprimir datos
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;
}

}
}
Listas enlazadas

También podría gustarte