Una lista es una estructura de datos que almacena elementos ordenados. Existen diferentes tipos de listas como listas simplemente enlazadas, doblemente enlazadas y circulares. Todas permiten operaciones básicas como crear, insertar, eliminar y comprobar si está vacía.
2. LISTAS
Una lista es una estructura dinámica de datos que contiene una colección de
elementos homogéneos (del mismo tipo) de manera que se establece entre ellos
un orden. Es decir, cada elemento, menos el primero, tiene un predecesor, y cada
elemento, menos el último, tiene un sucesor.
Tanto las estructuras vistas en la sección anterior (pilas) como las que veremos en
la siguiente (colas) son tipos de listas.
5. Operaciones básicas con listas
Las operaciones básicas que podemos realizar en cualquier lista, independiente
del tipo que sea, son la siguientes:
Crear: con esta operación se genera todo lo necesario para trabajar con una lista.
Insertar: permite añadir un elemento a la lista. En este caso debemos indicar al
programa si vamos a añadir el elemento nuevo al comienzo de la lista o al final de la
misma.
Eliminar: se usará para borrar un elemento de la lista. También podremos indicar si
queremos borrar el primero o el último.
Vacía: devolverá cierto si la lista está vacía.
6. Ejemplos
Insertar
La operación insertar consiste en la introducción de un nuevo elemento en la lista.
En una lista no ordenada no es necesario mantener ningún orden, por lo tanto la
inserción de elementos se puede realizar en cualquier lugar de la lista, al principio, al
final, en una posición aleatoria
7. Ejemplos
Borrar
La operación borrar consiste en la eliminación de la lista de un elemento concreto. El
elemento a borrar será escogido por el programador.
La eliminación en una lista no conlleva ningún trabajo adicional más que el propio de la
eliminación del elemento en sí. Para borrar un elemento cualquiera habría que realizar
un recorrido secuencial de la lista hasta encontrar el nodo buscado y una vez localizado
reestructurar los punteros para saltarse el nodo a borrar y así poder eliminarlo.
8. Tipos de listas
Podemos distinguir, atendiendo a la organización de los nodos, entre:
Listas simplemente enlazadas: cada nodo tiene un campo que apunta al siguiente
nodo.
Listas doblemente enlazadas: cada nodo dispone de un puntero que apunta al
siguiente nodo, y otro que apunta al nodo anterior.
Otra distinción puede ser:
Listas lineales: son listas que tienen un comienzo y un final.
Listas circulares: en estas listas el último elemento apunta al primero, por lo tanto
podríamos estar recorriéndolas siempre, ya que no tienen final.
9. Lista simplemente enlazada
Es la más fundamental estructura de datos basada en punteros, y del concepto
fundamental de ésta derivan las otras estructuras de datos
Un arreglo asigna memoria para todos sus elementos ordenados como un sólo
bloque. En cambio, la lista enlazada asigna espacio para cada elemento por
separado, en su propio bloque de memoria, llamado nodo. La lista conecta estos
nodos usando punteros, formando una estructura parecida a la de una cadena.
10. Lista doblemente enlazada
Una lista doblemente enlazada es una lista lineal en la que cada nodo tiene dos
enlaces, uno al nodo siguiente, y otro al anterior.
Las listas doblemente enlazadas no necesitan un nodo especial para acceder a ellas,
pueden recorrerse en ambos sentidos a partir de cualquier nodo, esto es porque a
partir de cualquier nodo, siempre es posible alcanzar cualquier nodo de la lista, hasta
que se llega a uno de los extremos.
struct nodo {
int dato;
struct nodo *siguiente;
struct nodo *anterior;
};
11. Listas circulares
Una lista circular es una lista lineal en la que el último nodo a punta al primero.
Las listas circulares evitan excepciones en la operaciones que se realicen sobre ellas.
No existen casos especiales, cada nodo siempre tiene uno anterior y uno siguiente.
En algunas listas circulares se añade un nodo especial de cabecera, de ese modo se
evita la única excepción posible, la de que la lista esté vacía
struct nodo {
int dato;
struct nodo *siguiente;
};
12. Aplicaciones
SIMPLE
Se pude utilizar para hallar los elementos de una fila de personas
Puede ser utilizada para un cronograma de actividades diarias
DOBLE
Se puede utilizar para almacenar información como los botones de adelante y atrás del
browser.
Puede ser utilizada para los datos de transacción de una cuenta bancaria
CIRCULAR
Puede ser utilizada para almacenar una sucesión de imágenes de un experimento.
Puede ser utilizada para almacenar una sucesión de imágenes de un experimento
13. Ejercicios
Utilizando listas dobles guardar libros con su respectiva información, incluir datos
del autor y de la editorial
Realizar un programa el cual se deba ingresar una palabra, después la misma
palabra y una nueva, y que diga si la primera palabra fue ingresada en la segunda
vez
Ingresar números aleatorios en una lista y que luego me muestre la lista
ordenada ascendentemente
Ingresar un número de cédula y que vaya separando de dos en dos, sumar cada
dígito hasta que me queden solo de una cifra y calcular cuantos números
perfectos tengo
Realizar un snake usando listas doblemente enlazadas