2. LISTA ENCADENADA
Definición: Una lista encadenada es una lista implementada mediante una
estructura doblemente encadenada. En este tipo de implementación una lista
es representada con un campo en el que se guarda la longitud, otro con un
apuntador al primer nodo de la lista y un campo con un apuntador al último
nodo de la lista. En cada nodo de la lista se guarda el elemento, un
apuntador al nodo anterior y un apuntador al siguiente nodo. En el caso del
último nodo de la lista el apuntador al siguiente nodo es nulo y para el caso
del primer nodo de la lista el apuntador al nodo anterior es nulo.
La complejidad de la búsqueda en el peor caso en este tipo de estructuras es
O(n), donde n es la longitud de la lista.
3. LISTA ENLAZADA
Definición: consiste en una secuencia de nodos, en los que se guardan
campos de datos arbitrarios y una de dos referencias al nodo
anterior y/o posterior.
Cabeza: al primer nodo de una lista enlazada
Fin: al ultimo nodo de una lista enlazada
4. TIPOS DE LISTAS ENLAZADAS
- Listas simples enlazadas: tiene un enlace por nodo. Este enlace apunta al
siguiente nodo en la lista, o al valor nulo o lista vacia, si es el ultimo nodo.
5. - LISTA DOBLEMENTE ENLAZADAS:
cada nodo tiene dos enlaces: uno apunta al nodo anterior, o apunta al valor Nulo
o la lista vacia si es el primer nodo; y otro que apunta al valor Nulo o la luista
vacia si es el ultimo nodo.
6. LISTAS ENLAZADAS CIRCULARES:
-en una lista enlazada circular, el primer y el ultimo nodo están unidos. Para
recorrer una lista enlazada circular podemos empezar por cualquier nodo y
seguir la lista en cualquier dirección
hasta que se regrese al nodo original.
7. - LISTAS ENLAZADAS CIRCULARES SIMPLES:
Cada nodo tiene un enlace, análogo al de las listas enlazadas simples, la
diferencia está en que el siguiente nodo del último apunta al primero.
- Listas enlazadas doblemente circular: En una lista circular
doblemente enlazada, cada nodo tiene dos enlaces, análogamente a la
lista doblemente enlazada lineal, el cambio radica en que el enlace
anterior del primer nodo apunta al último y el enlace siguiente del último
nodo, apunta al primero.
8. OBJETIVOS:
- El principal beneficio de las listas enlazadas respecto a los arreglos
convencionales es que el orden de los elementos enlazados puede ser
diferente al orden de almacenamiento en memoria o el disco, permitiendo
que el orden de recorrido de la lista diferente al de almacenamiento.
- Las listas enlazadas permiten inserciones y eliminación de nodos en
cualquier punto de la lista en tiempo constante, pero no permiten un acceso
aleatorio.
9. Ventajas:
- Los elementos se pueden insertar en una lista indefinidamente mientras que
en un arreglo tarde o temprano se llenara o necesitara ser redimensionado,
una costosa operación que incluso puede ser no ser posible si la memoria se
encuentra fragmentada.
Desventajas:
- las listas son de acceso secuencial, y solo puede ser recorridas en una
dirección.
- El acceso secuencial es más lento en las listas.
- Se requiere de almacenamiento extra para las referencias.
- Puede resultar lento asignar memoria para cada nuevo elemento.
10. LAS LISTAS
P: puntero a un nodo
L: puntero a la lista
ListaVacia(L): Iniciliza la lista L, como lista vacía
empty(L): determina si la lista está vacía o no
Insertar(L, x, p): Inserta al dato x, en un nuevo nodo de la lista L,
después del nodo apuntado por p
eliminar(L, x): elimina, de la lista L, el nodo que contiene a x
.
11. Nodo(p): Hace referencia la nodo que apunta p
Info(p): hace referencia al info del nodo
next(p): siguiente dirección si p no es NULL
Info(next(p)): info del nodo que sigue a nodo (p) en la lista
Se puede decir que, estas son las operaciones básicas para una lista; sin
embargo, como ya se ha insistido, eso dependerá del programador y de la
complejidad del problema que se está resolviendo, además del tipo de lista
que se haya elegido