Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
UNEDS
LISTAS ENLAZADAS
Estructura de Datos
Listas.
Pilas.
Colas
rboles.
Grafos
Estructura de Datos
Listas Enlazadas
Una lista lineal enlazada es un conjunto de elementos u objetos de cualquier tipo,
originariamente vaca que, durante la ejecucin del programa va creciendo o
decreciendo elemento a elemento segn las necesidades previstas.
En una lista lineal cada elemento apunta al siguiente, es decir, cada nodo tiene
informacin de dnde est el siguiente. Por este motivo tambin se le llama lista
enlazada.
Estructura de Datos
Listas Enlazadas
La forma ms simple de estructura dinmica es la lista simplemente enlazada o lista
abierta.
Cada elemento (nodo) slo dispone de un puntero, que apuntar al siguiente elemento de la
lista o valdr NULL si es el ltimo elemento. Slo se pueden recorrer hacia delante.
En esta forma los nodos se organizan de modo que cada uno apunta al siguiente, y el ltimo
no apunta a nada, es decir, el puntero del nodo siguiente vale NULL.
Para crear un alista debemos definir la clase de elementos que van a formar parte de la
misma. Un tipo de dato genrico podra ser:
struct nodo{
int dato;
struct nodo *sig;
};
Estructura de Datos
Listas Enlazadas
Cuando el puntero que usamos para acceder a la lista vale NULL, diremos que la lista est
vaca:
*pNodo = NULL;
/* lista vaca */
Estructura de Datos
Listas Enlazadas
Cuando el puntero que usamos para acceder a la lista vale NULL, diremos que la lista est
vaca:
*pNodo = NULL;
/* lista vaca */
Estructura de Datos
Listas Enlazadas
Operaciones bsicas con listas:
Con las listas se pueden realizar las siguientes operaciones bsicas:
a)
b)
c)
d)
e)
f)
Crear lista
Aadir o insertar elementos
Buscar o localizar elementos.
Borrar elementos.
Moverse a travs de una lista.
Ordenar una lista.
Cada una de estas operaciones tendr varios casos especiales, por ejemplo, no
ser lo mismo insertar un nodo en una lista vaca, o al principio de una lista no
vaca, o al final, o en una posicin intermedia.
Estructura de Datos
Listas Enlazadas
a) Crear Lista.
Si queremos crear una lista, podemos emplear la tcnica de reservar memoria dinmicamente. Para ello escribimos una
funcin llamada insertar:
La funcin principal tomar la forma:
void main(void)
{
struct elemento *p; //puntero a un nodo
c = NULL; /* lista vaca */
/* Reserva dinmica de memoria */
p = nuevo_elemento();
/* p apunta al nodo recin creado */
p->sig = NULL; /* fin de lista */
/* operaciones. . */
/* Liberacin de memoria reservada */
delete (p) /* en compilador de C++ */
/* free(p); en el compilador de C */
}
Por: Ing. Oswaldo
Basurto G.
Estructura de Datos
Listas Enlazadas
Estructura de Datos
Listas Enlazadas
10
Estructura de Datos
Listas Enlazadas
Insertar un elemento en la primera posicin de una lista:
Podemos considerar el caso anterior como un caso particular de ste, la nica diferencia es que en el
caso anterior la lista es una lista vaca, pero siempre podemos, y debemos considerar una lista vaca
como una lista.
Por tanto, ahora la lista ya existe.
De nuevo partiremos de un nodo a insertar, con un puntero que apunte a l ( p ), y de una lista, en este
caso no vaca, apuntada por cabeza o lista:
El proceso es el siguiente:
1.
2.
11
Estructura de Datos
Listas Enlazadas
Insertar un elemento en la primera posicin de una lista:
Podemos considerar el caso anterior como un caso particular de ste, la nica diferencia es que en el
caso anterior la lista es una lista vaca, pero siempre podemos, y debemos considerar una lista vaca
como una lista.
Por tanto, ahora la lista ya existe.
De nuevo partiremos de un nodo a insertar, con un puntero que apunte a l ( p ), y de una lista, en este
caso no vaca, apuntada por cabeza o lista:
El proceso es el siguiente:
1.
2.
12