Está en la página 1de 4

UNIVERSIDAD AUTÓNOMA DEL CARMEN

FACULTAD DE CIENCIAS DE LA INFORMACIÓN

LICENCIATURA EN INGENIERÍA EN SISTEMAS

FRANCISCO EDUARDO REYES PÉREZ

Modelo Entidad Relación

Nombre del docente: Patricia Zavala Carrillo

Fecha de entrega:24/08/2023
Lista Simple
Una lista enlazada simple es una estructura de datos en la que cada elemento apunta al siguiente.
De este modo, teniendo la referencia del principio de la lista podemos acceder a todos los
elementos de la misma. La figura representa esta estructura de datos.
Otra ventaja es su facilidad para añadir nuevos elementos en partes intermedias de la lista, ya
que sólo es necesario cambiar el apuntador que sirve de enlace entre el elemento anterior y el
elemento siguiente al insertado; mientras que en un arreglo, tendríamos que colocar todos los
elementos que le siguen a la posición que queramos agregar.
Algoritmo :
Para insertar un nodo dentro de la lista, será necesario recorrer la lista secuencialmente hasta
llegar a la posición donde insertaremos el nodo, posteriormente cambiar el apuntador del nodo
previo y el nuevo nodo.

Eliminar nodos en una lista simplemente enlazada es un proceso en el que debemos encontrar el
nodo previo al que queremos eliminar, cambiar su apuntador y liberar la memoria del nodo que
vamos a eliminar.
Ejemplos de aplicación en computación : ● Imprimir el contenido de la lista
Esta operación, como su nombre lo indica, consiste en una función que permite mostrar todos los
elementos dentro de la lista enlazada a partir de un punto de inicio sin alterar el orden de sus
elementos.

Una forma de lograr lo anterior es definir un nodo n que ciclicamente tome el valor de cada nodo
de la lista para después imprimir su contenido.
● Búsqueda
La operación de búsqueda consiste en buscar un dato dentro de la lista enlazada, como los
elementos de la línea están unidos por medio de punteros, sólo es posible realizar una búsqueda
secuencial en la lista.
La siguiente función realiza lo anterior, retornando el índice donde se encuentra el valor en caso de
ser encontrado.
Lista Dobles
En algunas aplicaciones podemos desear recorrer la lista hacia adelante y hacia atrás, o dado un
elemento, podemos desear conocer rápidamente los elementos anterior y siguiente. En tales
situaciones podríamos desear darle a cada celda sobre una lista un puntero a las celdas siguiente y
anterior en la lista tal y como se muestra en la figura.
Otra ventaja de las listas doblemente enlazadas es que podemos usar un puntero a la celda que
contiene el i-ésimo elemento de una lista para representar la posición i, mejor que usar el puntero
a la celda anterior aunque lógicamente, también es

posible la implementación similar a la expuesta en las listas simples haciendo uso de la cabecera.
El único precio que pagamos por estas características es la presencia de un puntero adicional en
cada celda y consecuentemente procedimientos algo más largos para algunas de las operaciones
básicas de listas.
Algoritmo :
Un procedimiento para borrar un elemento en la posición p en una lista
doblemente enlazada es:
void borrar (posicion p) {
if (p->anterior != NULL) p->anterior->siguiente = p->siguiente;
if (p->siguiente != NULL) p->siguiente->anterior = p->anterior;
free(p); }
El procedimiento anterior se expresa de forma gráfica en como muestra la figura:

Para su inserción es :
void Insertar (tElemento x, tPosicion p, tLista l) {
tPosicion nuevo;
nuevo = (tPosicion)malloc(sizeof(tipocelda)); if (nuevo == NULL)
Error("Memoria insuficiente."); nuevo->elemento = x; nuevo->siguiente = p; nuevo->anterior = p-
>anterior; p->anterior->siguiente = nuevo; p->anterior = nuevo;
}
Sus recorridos son :
Elemento elemento(Posicion p, Lista l)
{
}
return p->elemento;
}
Posicion siguiente (tPosicion p, tLista l) {
if (p == l){
if (p == l){
Error("Posicion fin(l)");

Error("Posicion fin(l)"); }
return p->siguiente;
}
Posicion anterior( tPosicion p, tLista l) {
if (p == l->siguiente){ Error("Posicion primero(l)");
}
return p->anterior;
}
Ejemplos de aplicación en computación :
Dentro del tipo abstracto de listas doblemente enlazadas podemos proponer las siguientes
primitivas:
● Lista crear ()
● void destruir (Lista l)
● Posicion primero (Lista l)
● Posicion fin (Lista l)
● void insertar (Elemento x, Posicion p, Lista l)
● void borrar (Posicion *p, Lista l)
● Elemento elemento(Posicion p, Lista l)

Lista 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.
Algoritmo :
Partiremos de que ya tenemos el nodo a insertar y, por supuesto un puntero que
apunte a él, además el puntero que define la lista, que valdrá NULL: El proceso es muy simple,
bastará con hacer que:
1. listaapunteanodo.
2. ylista->siguienteapunteanodo.

Para eliminar usamos este algoritmo :


Ejemplos de aplicación en computación :
● Almacenamiento y manipulación de datos: Las listas son utilizadas para almacenar y manipular
datos de diferentes tipos y estructuras. En

programación, una lista es una colección ordenada de elementos, lo que permite almacenar y
recuperar información de forma eficiente.
● Algoritmos de búsqueda y ordenación: Las listas son utilizadas para implementar algoritmos de
búsqueda y ordenación, como el algoritmo de búsqueda binaria, el algoritmo de ordenamiento
burbuja, el algoritmo de ordenamiento quicksort, entre otros.

También podría gustarte