160 likes | 307 Views
Listas encadenadas. M.C. Juan Carlos Olivares Rojas. Agenda. Concepto de nodo y encadenamiento. Operaciones de inserción, desplegado y eliminación de nodos de una lista. Aplicación integradora de conceptos del curso. Concepto de nodo y encadenamiento.
E N D
Listas encadenadas M.C. Juan Carlos Olivares Rojas
Agenda Concepto de nodo y encadenamiento. Operaciones de inserción, desplegado y eliminación de nodos de una lista. Aplicación integradora de conceptos del curso.
Concepto de nodo y encadenamiento • Las listas ligadas es una de las estructuras de datos definidas por el usuario más empleada. • Las listas tienen la característica de que son dinámicas por este motivo se hace uso de memoria dinámica, apuntadores (C/C++) y referencias (Java/C++).
Concepto de Nodo y Encadenamiento • El nodo es el elemento fundamental de la lista. • Si una lista no tiene nodos se dice que está vacía. • Las listas no tienen un tamaño máximo predeterminado.
Concepto de Nodo y Encadenamiento • Un nodo no es otra cosa que una estructura con los datos que nos van a interesar trabajar. El nodo contiene además al menos un enlace simple (listas ligadas) o enlaces dobles (lista doblemente ligada). • De manera interna la lista puede tener uno o más apuntadores a los nodos de la lista (generalmente: inicio, fin y actual)
Concepto de Nodo y Encadenamiento • Los principales tipos de lista son dos dependiendo de la forma en como se accedan a los nodos: • Cola (FIFO, Fist In First Out) en donde por un extremo se atienden clientes y por el otro van llegado.
Concepto de Nodo y Encadenamiento • Pila (LIFO, Last In First Out) en este tipo de lista sólo se trabaja con un extremo, el llamado cima de la pila. • El encadenamiento consiste en enlazar nodo con nodo para poder ligarlos. Sin encadenamiento no se puede tener una lista ligada.
Concepto de Nodo y Encadenamiento • Generalmente el inicio y el fin de una lista están ligadas hacia un nodo vacío. struct nodo { int valor; struct nodo *izq; struct nodo *der; }
Concepto de Nodo y Encadenamiento • Las listas circulares son aquellas que el fin de la lista apunta hacia el inicio. • Las áreas de aplicación de las listas son muy diversas. Se utilizan para ordenamiento, búsquedas, almacenamiento de información, etc.
Operaciones de inserción, desplegado y eliminación de nodos de una lista • Las operaciones básicas de una lista consiste en agregar elementos, borrarlos y listarlos. • Cada una de estas operaciones debe considerar en que parte de la lista se hace: inicio, en medio o fin.
Operaciones con Lista • Lenguajes como Java tienen de manera predeterminada objetos del tipo Lista u objetos derivados de lista. • Otras operaciones consiste en determinar si la lista está vacía. • Estructuras como árboles y grafos siguen el mismo principio.
Operaciones con Lista • Cuando se agrega un nuevo elemento lo primero que hay que realizar es crear el nuevo nodo, identificar en que parte debe de ir, actualizar los apuntadores al nuevo nodo, considerar los casos especiales. • Al borrar se sigue el procedimiento contrario, se actualizan apuntadores, desligando el nodo y liberando memoria.
Aplicación integradora de conceptos del curso • Realizar un programa que permita sumar números enteros muy grandes. Cada dígito debe pertenecer a un nodo. Se ordenan los nodos para ir sumando el número menos significativo. El resultado de la operación se guarda en otra lista.