Capítulo 5. LISTAS. 5.1 Listas y listas vinculadas. Una lista es una colección lineal de elementos.

Documentos relacionados
UNIDAD 8 Tipos de datos dinámicos: Punteros Asignación dinámica de memoria. Uso de punteros. Inicialización y asignación de punteros.

UNIDAD 8 Tipos de datos dinámicos: Punteros Asignación dinámica de memoria. Uso de punteros. Inicialización y asignación de punteros.

Estructura de Datos. Listas Enlazadas

Estructuras Dinámicas de datos.

Ingeniera de Sistemas: Luz Esperanza Espitia Tutora de Estructura de datos.

Guía práctica de estudio 07. Estructuras de datos lineales: Lista simple y lista circular.

Estructura de datos y algoritmos. Tema IV: TIPOS DE DATOS ABSTRACTOS DINÁMICOS LINEALES

LISTAS. Prof. Ing. M.Sc. Fulbia Torres

Profesor: José Miguel Rubio L.

PROGRAMA EDUCATIVO INFORMATICA ADMINISTRATIVA

Algoritmos y estructuras de datos

LISTAS ENLAZADAS FUNDAMENTOS TEORICOS

APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable.

Este material es de uso exclusivo para estudio, los textos fueron tomados textualmente de varios libros por lo que está prohibida su impresión y

ELO320 Estructuras de Datos y Algoritmos. Listas. Tomás Arredondo Vidal

Unidad Nº V Listas Enlazadas

Introducción: una simple colección

Tipos Recursivos de Datos

Tema 8. Listas. José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz

Tabla de Símbolos. Programación II Margarita Álvarez

Tabla de Símbolos. Programación II Margarita Álvarez

1.2.4 Listas enlazadas

El método main de la clase PruebaArbol, empieza creando una instancia de un objeto Árbol vacío y asigna su referencia a la variable árbol

Árboles balanceados (AVL) Tablas de dispersión (Hash) Colas de prioridad (Heap)

Estructura de Datos. Unidad de Aprendizaje: Unidad de Competencia II: Estructuras de Datos Lineales. M. en C. Edith Cristina Herrera Luna

Capitulo V Listas Enlazadas

Estructura de Datos. Centro Universitario UAEM Valle de México. Unidad II. Estructuras de Datos Lineales - Listas

Tema 3. Estructura de datos lineales. J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.

ÍNDICE 1. Índice Listas ordenadas Operaciones permitidas Pilas Operaciones permitidas...

Un árbol binario T se define como un conjunto finito de elementos, llamados nodos, de forma que:

Estructura de datos. Carrera: IFM Participantes. Representantes de la academia de sistemas y computación de los Institutos Tecnológicos.

Estructura de datos. Carrera: IFM Participantes. Representantes de la academia de sistemas y computación de los Institutos Tecnológicos.

Universidad Autónoma del Estado de México 2016, Año del 60 Aniversario de la Universidad Autónoma del Estado de México

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 4. Técnicas de Dispersión. Definición y Manejo.

Universidad Nacional del Santa Facultad de Ingeniería Escuela Académico Profesional de Ingeniería de Sistemas e Informática

Tema 08: TAD Árbol. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom

LECCION N 08 ARBOLES. Un árbol es un grafo A que tiene un único nodo llamado raíz que:

Estructura de datos Colas

Estructura de Datos Unidad 6: ARBOLES

Tema 4- Representación Enlazada

Listas enlazadas. Programación de Sistemas

UNIDAD 9. DATOS COMPLEJOS PILAS

DEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

2. Con una lista ordenada, aunque la localización y eliminación es rápida el problema es en la inserción de datos pues puede ser del orden de O(n).

Es común al crear estructuras de datos y luego trabajar sobre las mismas, tener la necesidad de realizar búsquedas en forma más frecuente que la

ESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota:

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 3. Estructuras de Almacenamiento. Básicas. Definición y Manejo.

Unidad III: Estructuras lineales

Árboles B y B ) 20. Algoritmos y Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 63

A l g o r i t m o y E s t r u c t u r a d e D a t o s Ing. en Sistemas de Información - 1º año -

Estructuras lineales de datos

Estructuras de Datos II

A l g o r i t m o y E s t r u c t u r a d e D a t o s Ing. en Sistemas de Información - 1º año -

INDICE 1.1. Información y Significado 1.2. Arreglos en C 1.3. Estructura en C 1.4. Clases en C++ 2. La Pila 2.1. Definición y Ejemplos

Tema 03: TAD Cola. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom

Contenido PARTE II: ESTRUCTURAS DE DATOS AVANZADAS

UNIVERSIDAD AUTONOMA DE MADRID ESCUELA POLITÉCNICA SUPERIOR ESTRUCTURAS DE DATOS Y ALGORITMOS

12/08/2017 AVL. Especificación sobre árboles AVL. AVL: rotaciones

Universidad Centroccidental "Lisandro Alvarado" Decanato de Ciencias y Tecnología Departamento de

Francisco J. Hernández López

Introducción a los árboles. Lección 11

Un hombre caminaba por el bosque cuando vió una zorra lisiada. " Cómo hará para alimentarse?", pensó.

Estructuras de Datos Dinámicas Contenido del Tema

Estructuras de datos: Árboles binarios de

4.1 Concepto de árbol.

ESTRUCTURAS DE DATOS OTOÑO 2014 DR. MARIO ROSSAINZ LOPEZ

Algoritmos y Estructuras de Datos Ingeniería en Informática

Programación de sistemas

EJERCICIOS PARA EL PRIMER PARCIAL (de exámenes pasados)

Gestión de archivos. Gestión de archivos

PRÁCTICA No. 9 RECORRIDOS EN ÁRBOLES BINARIOS

ASIGNATURA: (TIS-106) Estructuras de Datos II DOCENTE: Ing. Freddy Melgar Algarañaz TEMA 4. Montículos binarios (heaps)

Estructura de Datos: Lista. Facultad Ingeniería y Tecnología Informática Tecnicatura en Programación de Computadoras. Autora: Prof.

ESTRUCTURAS DINÁMICAS DE DATOS (LISTAS)

6. El TDA Lista Implementación con listas enlazadas. es de tipo genérico T. Pueden existir elementos repetidos (a diferencia de los conjuntos).

Estructuras de Datos y Algoritmos Tema 3: Arrays y listas enlazadas

A) PREORDEN B) INORDEN C) POSTORDEN D) NIVELES

CONCEPTOS BÁSICOS. Prof. Ing. M.Sc. Fulbia Torres

Programación de sistemas Listas enlazadas

Estructuras de Datos. 8.6 Árboles B. Supongamos que los nodos de un árbol deben ser guardados en un medio de almacenamiento secundario (disco).

Grafos. Suponiendo que e = [u, v]. Entonces los nodos u y v se llaman extremos de e y u y v se dice que son nodos adyacentes o vecinos.

GENERACIÓN DE EXÁMENES TIPO TEST

Tema: Tipos Abstractos de Datos (TAD s) en C#.

Especificación de Requisitos (ERS)

Estructura de datos y de la información Boletín de problemas - Tema 10

UNIDAD 2. ESTRUCTURAS DE DATOS SECUENCIALES. 1. Pilas (Stacks)

3 - Tipos Inductivos (Recursivos)

Estructuras de datos geométricas

Estructura de Datos. Estructuras de Datos no lineales : Árboles

Para la Implementación Dinámica de listas: Se usa la asignación dinámica de memoria mediante punteros o referencias.

Clases e instancias. Algoritmos y Estructuras de Datos I. Clases e instancias. memoria dinámica.

Capítulo. Listas, pilas y colas en C. Contenido. Introducción

ESTRUCTURAS DE ARBOLES Y HASHING

Tema 7- Modelo y Aplicación de Pila, Cola y. Tema 7- Modelo y Aplicación de. Lista Con Punto de Interés

Colas. Carlos Delgado Kloos Dep. Ingeniería Telemática Univ. Carlos III de Madrid. Java: Colas / 1

Eduardo Mosqueira Rey Bertha Guijarro Berdiñas Mariano Cabrero Canosa

CI2126 PRÁCTICA 9: TAD COLA. 1) Implemente las operaciones C_Insert y C_Remove del TAD COLA usando a. un arreglo. La estructura sería:

Segundo Parcial de Programación 2 7 de junio de 2017

Introducción a Árboles Árboles Binarios

Nombre de la asignatura : Estructura de Datos I. Carrera : Ingeniería en Sistemas Computacionales. Clave de la asignatura : SCB-9321

Transcripción:

53 Capítulo 5. LISTAS. 5.1 Listas y listas vinculadas. Una lista es una colección lineal de elementos. Las listas pueden ser almacenadas en arreglos ( de qué manera?), pero las listas enlazadas proporcionan varias ventajas. #define NUM_NODES 100 struct nodetype{ int info; int next; }; strcuct nodetype nodes[num_nodes];

54 Una lista enlazada es una colección lineal de estructuras auto referenciadas (nodos), conectadas por enlaces de apuntador. Se tiene acceso a una lista enlazada vía un apuntador al primer nodo de la lista. Se puede tener acceso a los nodos subsecuentes vía el apuntador de enlace almacenado en cada nodo. Por regla convencional, para marcar el fin de la lista, el apuntador de enlace en el último nodo de la lista se define a NULL. Una lista enlazada es apropiada cuando no es predecible de inmediato o antemano, el número de elementos de datos a representarse o almacenar en la estructura.

55 Las listas enlazadas son dinámicas, por lo que conforme sea necesario puede aumentar o disminuir la longitud de una lista. Las listas enlazadas pueden mantenerse en orden, insertando cada elemento nuevo en el punto apropiado dentro de la lista. Normalmente, los nodos de las listas enlazadas no están almacenados en forma contigua en la memoria; sin embargo, lógicamente los nodos aparecen como contiguos. 5.2 Inserción y eliminación de nodos de una lista. Los nodos pueden ser insertados en cualquier parte de la lista, se pueden insertar al principio o al final o en medio de la lista, el

56 mecanismo de inserción estará en función directa de las necesidades particulares de la implementación de la lista. Si se desea mantener una lista ordenada de elementos por ejemplo, se deberá ir recorriendo la lista de manera secuencial hasta encontrar el lugar apropiado para su inserción. La eliminación de un nodo particular consiste primero en localizar dicho nodo dentro de la lista, si el nodo existe entonces se procede a su eliminación, si no existe debería indicar que el elemento que se está intentando eliminar no existe dentro de la lista.

57 5.3 Simulación. Una de las aplicaciones más útiles de las colas, las colas de prioridad y de las listas vinculadas es la simulación. Un programa de simulación intenta modelar una situación del mundo real para aprender algo de ella. Cada objeto y acción del mundo tiene su contraparte en el programa. Si la simulación es precisa, el resultado del programa reflejará el resultado de las acciones que se simulan, por lo que será posible comprender lo que ocurre en una situación del mundo real sin realmente observar su ocurrencia.

58 Ejemplos en los que es posible aplicar la simulación utilizando las estructuras de datos anteriormente mencionadas: Bancos. Líneas aéreas. Casetas de cobro de autopistas. Terminal de autobuses. 5.4 Listas circulares. Algunos de los problemas que se tienen con una lista simplemente ligada son:

59 Dado un apuntador ptr para un nodo en una lista lineal, no se puede llegar a ninguno de los nodos que preceden a ptr. Si se recorre la lista, el apuntador externo a la lista debe preservarse para que se pueda hacer referencia a la lista otra vez. Suponga que se hace un pequeño cambio a la estructura de una lista lineal: El campo next en el último nodo contenga un apuntador de regreso al primer nodo y no un apuntador nulo.

60 Al tipo de lista que adopta este cambio se le denomina lista circular. Ilustración 1. Lista Circular. En una lista circular es posible llegar a cualquier otro punto de ella partiendo de un nodo determinado.

61 Debe observarse que una lista circular no tiene un primer o último nodo natural, por lo que se debe establecer un primer y último nodo por convención. Otra convención útil, es permitir que el apuntador externo a la lista circular apunte al último nodo y permitir que el siguiente nodo sea el primero de la lista, tal y como lo muestra la Ilustración 1. También se establece la convención de que un apuntador nulo representa una lista circular vacía. Ejercicio: Cuáles son las consideraciones necesarias para que una lista circular funcione? Cómo es que deben hacerse las

62 inserciones? Cómo deben hacerse las eliminaciones? Cuáles serían las funciones primitivas? Qué otras operaciones se podrían definir? 5.4.1 El problema de Josephus. El siguiente problema clásico, puede ser solucionado utilizando listas circulares: Un grupo de soldados se encuentran rodeados por una abrumadora fuerza enemiga. No hay esperanza de victoria sin refuerzos, pero sólo hay un caballo disponible para escapar. Los soldados hacen un pacto de sangre para determinar cuál de ellos va

63 a escapar y pedir ayuda. Para ello, forman un círculo y van eligiendo un número de un sombrero. También se elige uno de sus nombres de otro sombrero. Iniciando con el soldado cuyo nombre se eligió, se empieza a contar en el sentido de las manecillas del reloj alrededor del círculo. Cuando la cuenta llega a n, este soldado se retira del círculo y la cuenta vuelve a empezar con el soldado siguiente. El proceso continúa análogamente hasta que sólo quede un soldado, el cuál será el que va a tomar el caballo y escapar.

64 En resumen el problema es, dado un número n, el ordenamiento de los soldados en el círculo, y el soldado a partir del que comienza la cuenta, determinar: El orden en el cual se eliminan los soldados del círculo. Cuál soldado escapa. Ejercicio: Utilice una implementación de una lista circular para resolver el problema de Josephus. 5.5 Listas doblemente enlazadas. Aunque una lista circular tiene ventajas sobre una lista lineal, todavía tiene algunas desventajas:

65 No es posible recorrer la lista hacia atrás. No es posible eliminar un nodo, dado un apuntador para este nodo ( Por qué?). Una estructura de datos conveniente para subsanar estas desventajas es precisamente una lista doblemente enlazada. En una lista doblemente enlazada, cada nodo tiene dos apuntadores: uno a su sucesor y el otro a su antecesor. Las listas doblemente enlazadas pueden ser lineales o circulares.

66 En su esquema más simple, una lista doblemente enlazada tiene tres campos. Ejercicio: Defina los lineamientos principales que utilizaría, para definir una implementación de una lista doblemente enlazada. Ejercicio: Cuáles son las consideraciones necesarias para que una lista doblemente enlazada funcione? Cómo es que deben hacerse las inserciones? Cómo deben hacerse las eliminaciones? Cuáles serían las funciones primitivas? Qué otras operaciones se podrían definir? Qué cambios habría que realizar para una lista doblemente enlazada circular?