Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CARRERA: INFORMÁTICA
Declaración de listas
Informe
PROFESORA: ALUMNO:
CI: 24057408
INTRODUCCIÓN_______________________________________________Pág.3
DESARROLLO_________________________________________________Pág.4
CONCLUSIÓN________________________________________________Pág.20
REFERENCIAS BIBLIOGRÁFICAS________________________________Pág.21
ANEXOS_____________________________________________________Pág.22
INTRODUCCIÓN
En programación una lista es una secuencia de nodos o elementos del mismo tipo,
tal que, cada nodo señala, apunta, conoce, o sabe cuál es el siguiente nodo, (si
existe), si no hay un nodo siguiente, entonces apunta a NULL, (una dirección
segura).
Tipos de Listas
Lista Simple
Repaso teórico. 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.
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 1 representa esta
estructura de datos.
La lista enlazada circular no es más que una lista enlazada en la que el último
elemento de la lista está enlazado al primer elemento de la lista, formando un círculo
cerrado. La estructura está representada en la figura 3.
Una lista enlazada (Linked List) – es una secuencia de nodos. Junto con el arreglo
(array), la lista enlazada es considerada una de las estructuras de datos
fundamentales y puede ser utilizada para implementar otras estructuras más
complejas. El acceso a los nodos en una lista enlazada es normalmente secuencial,
excepto el acceso al primer nodo y posiblemente, el acceso al último nodo.
La principal ventaja de las listas enlazadas con respecto a los arreglos es que se
pueden añadir o eliminar nodos dinámicamente sin necesidad de realizar
desplazamientos. Por ejemplo, la siguiente imagen de Wikipedia muestra cómo
añadir un nuevo nodo al centro de una lista enlazada:
const lista = {
cabecera: {
valor: 6
siguiente: {
valor: 10
siguiente: {
valor: 12
siguiente: {
valor: 3
siguiente: null
}
}
}
}
}
};
Una ventaja de las listas enlazadas
• Los nodos pueden ser fácilmente removidos o agregados a una lista enlazada sin
tener que reorganizar la estructura de datos entera. Esta es una ventaja que tiene
sobre los arreglos.
class NodoLista {
constructor(dato) {
this.dato = dato
this.siguiente = null
}
}
Implementación de una lista enlazada en JavaScript
El código de abajo muestra la implementación de una clase de lista enlazada con
un constructor. Nota que, si el nodo de cabecera no es pasado, la cabecera se
inicializa a nulo.
class ListaEnlazada {
constructor(cabecera = null) {
this.cabecera = cabecera
}
}
Poniéndolo todo junto
Vamos a crear una lista enlazada con la clase que hemos creado. Primero, creamos
dos nodos de lista, nodo1 y nodo2 y un puntero/apuntador del nodo 1 al nodo 2.
let nodo1 = new NodoLista(2)
let nodo2 = new NodoLista(5)
nodo1.siguiente = nodo2
A continuación, crearemos una Lista Enlazada con el nodo1.
let lista = new ListaEnlazada(nodo1)
Intentemos acceder a los nodos de la lista que hemos creado.
console.log(lista.cabecera.siguiente.dato) //devuelve 5
Algunas funciones de lista Enlazada
A continuación, implementaremos cuatro funciones de ayuda para la lista enlazada,
los cuales son:
1. magnitud()
2. vaciar()
3. obtenerUltimo()
4. obtenerPrimero()
Operaciones básicas de las listas enlazadas
Las operaciones típicas de la lista incluyen: Crear la lista, verificar si está vacía,
insertar elementos, eliminar elementos, mostrar elementos. La lista no tiene ninguna
restricción en cuanto a dónde puede eliminar o agregar nodos y es precisamente
esta característica lo que la hace la estructura más versátil.
Listas Circulares
En las listas circulares, nunca se llega a una posición en la que ya no sea posible
desplazarse. Cuando se llegue al último elemento, el desplazamiento volverá a
comenzar desde el primer elemento. Lista es el tipo para declarar listas, tanto
abiertas como circulares.
Una lista circular es una lista lineal en la que el último nodo apunta al primero. Las
listas circulares evitan excepciones en las operaciones que se realicen sobre ellas.
Lista de enlace doble: cada nodo contiene dos partes de enlace al siguiente nodo y
al anterior nodo. Lista de enlace circular simple: cada nodo contiene una parte de
enlace al siguiente nodo, pero su diferencia esta que el último nodo se enlaza con
el primer nodo de la lista.
En las listas circulares, nunca se llega a una posición en la que ya no sea posible
desplazarse (no existe el nil). Cuando se llegue al último elemento, el
desplazamiento volverá a comenzar desde el primer elemento. Es una estructura
de datos homogénea, dinámica y lineal.
Una lista doble circular es una estructura donde el último elemento tiene como
referencia siguiente al primer elemento y la referencia al anterior del primer
elemento de la lista también es el último.
Una lista circular es una lista lineal en la que el último nodo a punta al primero. Las
listas circulares evitan excepciones en las operaciones que se realicen sobre ellas.
No existen casos especiales, cada nodo siempre tiene uno anterior y uno siguiente.
La diferencia entre las tres estructuras que se estudiarán vendrá dada por la
posición del elemento a añadir, borrar y consultar:
/*Enunciado:
struct Nodo {
string nombre;
Nodo* siguiente;
};
class Lista {
private:
Nodo* primero;
Nodo* ultimo;
public:
Lista();
~Lista();
void agregar(string nombre);
void eliminar(string nombre);
void buscar(string nombre);
void imprimir();
};
Lista::Lista() {
primero = ultimo = nullptr;
}
Lista::~Lista() {
while (primero != nullptr) {
Nodo* aux = primero;
primero = primero->siguiente;
delete aux;
}
}
if (primero == nullptr) {
primero = ultimo = nuevo;
} else {
ultimo->siguiente = nuevo;
ultimo = nuevo;
}
}
if (primero->nombre == nombre) {
Nodo* aux = primero;
primero = primero->siguiente;
delete aux;
return;
}
if (actual != nullptr) {
anterior->siguiente = actual->siguiente;
if (actual == ultimo) {
ultimo = anterior;
}
delete actual;
}
}
if (actual != nullptr) {
cout<<actual->nombre <<" esta en la lista"<<endl;
}
}
void Lista::imprimir() {
Nodo* actual = primero;
int main() {
Lista lista;
lista.agregar("Ana");
lista.agregar("Juan");
lista.agregar("Pedro");
lista.imprimir();
lista.eliminar("Juan");
lista.imprimir();
lista.buscar("Pedro");
return 0;
}
CONCLUSIÓN
Al concluir este informe nos deja mucho aprendizaje sobre la declaración de las
listas su concepto, características, usos de las listas, tipos de listas lo que son las
listas simples, listas encuadernadas o enlazadas, listas circulares simples, listas
circulares dobles, además operaciones con listas: creación, inserción, supresión,
con punto de interés, a las operaciones de inserción, supresión y consulta. Se
realizó ejercicios con algoritmos para utilizar con listas, en este caso ejemplos con
lenguaje de programación C++.
REFERENCIAS BIBLIOGRÁFICAS
https://calcifer.org/documentos/librognome/glib-lists-queues.html
https://www.uv.mx/personal/ermeneses/files/2021/08/Clase5-
ListasEnlazadasFinal.pdf
https://www.it.uc3m.es/java/2011-12/units/pilas-
colas/guides/2/guide_es_solution.html
https://profesor.uprb.edu/mvelez/cursos/sici4036/ConceptosListasEnlazadas.html
https://webdiis.unizar.es/~elvira/eda/addeda/teruel/Estructuras_Lineales.html
ANEXOS