Clase II Estructuras dinámicas (TAD) Listas Enlazadas. ¿A que llamamos estructuras dinámicas? ¿Por qué son necesarias? Ventajas y Desventajas que tendremos.

Slides:



Advertisements
Presentaciones similares
Arreglos Unidimensionales y Bidimensionales ESTRUCTURAS DE DATOS I
Advertisements

Definición Las colas ofrecen dos operaciones fundamentales, que son encolar (al final de la cola) y desencolar (del comienzo de la cola). Al igual que.
ESTRUCTURA DE DATOS Unidad 04 Árboles BINARIOS DE BUSQUEDA.
ÁRBOLES EN C UNIVERSIDAD “ALONSO DE OJEDA” Facultad de Ingeniería
Unidad 5 Listas Enlazadas Bibliografía: Algoritmos y Estructuras de datos de Aguilar y Martinez. Unidad 9 Autor: Ing Rolando Simon Titiosky.
Ordenamiento Interno y Búsqueda Binaria
Ciclos Repetitivos y Vectores en C Sharp
ÁRBOLES BINARIOS DE BUSQUEDA
PROGRAMACION DE ESTRUCTURAS DE DATOS
Algoritmos Aleatorizados
Arreglos Ing. Nahiby Castillo.
Cont. Arbol Binario de Búsqueda (2). Sobre los recorridos Las versiones recursivas de los recorridos son costosas debido a la gran cantidad de llamadas.
Almacenamiento y Recuperacion de Información TAD_ABB Ana Lilia Laureano Cruces Universidad Autónoma Metroplotiana.
COLAS, IMPLEMENTACIÓN A PARTIR DE LISTAS Y PARA PILAS
Listas circulares.
Supongamos que nos plantean el siguiente problema:
PROGRAMACION II.  Es un conjunto de datos no necesariamente del mismo tipo, los cuales se podrán manipular o realizar cualquier operación sobre cada.
C++ LISTAS C++ 11/04/2017 Ing. Edgar Ruiz Lizama.
ESTRUCTURAS DE DATOS I Conocer, comprender y analizar algunos de los principales tipos de estructuras de datos.
La visualización El positivismo Hablar de manera positiva Saber proyectar la imagen.
7.  El TDA Diccionario.
Estructura de Datos y Algoritmos
Clase 10: Estructuras de datos y arreglos.
Diseño y análisis de algoritmos
Aplicación de estructuras de datos
Ordenación y Búsqueda.
Clasificación de los TDA
Metodología para solución de problemas
Arboles B (búsqueda externa)
Heap Fibonacci heap de Fibonacci es una estructura de datos similar a un heap binomial pero con mejor coste amortizado. se utiliza para mejorar el tiempo.
INSTITUTO TECNOLOGICO DE APIZACO
ARBOLES GENERALIZADOS
 Introducción  Conceptos El equipo demostrara y mostrara los conceptos, definición y funcionamiento de una las “listas doblemente enlazadas y circulares”
Árboles Binarios de Búsqueda (ABB)
IMPLEMENTACION DE COLAS MEDIANTE LISTAS
MIA - Grupo 5 Unidad 2.
M.C. Meliza Contreras González
Matrices Pág. 1. Matrices Pág. 2 Se llama matriz traspuesta de A, y se representa por A t a la matriz que resulta de intercambiar las filas y las columnas.
TEMA 4: USO DE EXPONENTES Y NOTACIÓN CIENTÍFICA 1 MATEMÁTICAS II POTENCIAS SUCESIVAS DE UN NÚMERO POTENCIAS SUCESIVAS DE UN NÚMERO ¡ CUIDADO CON LAS BACTERIAS.
Laboratorio de programación
PUNTEROS. Los punteros son de amplia utilización en programación y muchos lenguajes permiten la manipulación directa o indirecta de los mismos. Su razón.
Listas Dinámicas.
UNIDAD 8 Lista Enlazada: Eliminar Deseamos eliminar un elemento llamado elem de la lista enlazada. Es posible que la variable ini sea modificada. main(){
Bases de datos II Universidad del Cauca Ing. Wilson Ortega.
MULTIVERSIDAD LATINOAMERICANA CAMPUS TONALÁ Informática II FUNCIONES EN HOJAS DE CÁLCULO Competencia. Manejo de la información y aprendizaje permanente.
Page 1 Ciclo de Estructuras de Repetición Carlos Bautista García Unidad VI PROG 2270L.
Arquitectura y Sistemas Operativos Gestión de Memoria Parte 1 1 Gestión de Memoria – Parte 1 Agenda Parte 1 –RequisitosRequisitos –EvoluciónEvolución –Carga.
GENERICIDAD Es una propiedad que permite definir una clase o función sin especificar el tipo de datos de uno o mas de sus parámetros (Módulos Parametrizados).
Manejo de archivos de texto.  Unidad fundamental de almacenamiento dentro del ámbito de la informática. Alberga un conjunto de datos que es posible leer,
Tema 7: Ingeniería del software Definición de software El software es: 1. instrucciones (programas de computadora) que cuando se ejecutan proporcionan.
Inecuaciones lineales o inecuaciones de primer grado
JOSE ALBERTO JIMENEZ JIMENEZ KATTY HIPOLITO. 7.1 INTRODUCCION AL LENGUAJE EMSAMBLADOR.
CENTRO UNIVERSITARIO UAEM TEXCOCO INGENIERÍA EN COMPUTACIÓN DISEÑO DE SISTEMAS M. En C.C. Ma. Dolores Arévalo Zenteno.
This y static. This Normalmente, dentro del cuerpo de un método de un objeto se puede referir directamente a las variables miembros del objeto. Sin embargo,
 en el mundo de la tecnología hacia el ganado ha avanzado de una forma muy rapida.Lo que apenas hace unos años eran libros y libros, referente al ganado,
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
Una base de datos, a fin de ordenar la información de manera lógica, posee un orden que debe ser cumplido para acceder a la información de manera coherente.
Clase 1.  Un programador es aquella persona que escribe, depura y mantiene el código fuente de un programa informático, es decir, del conjunto de instrucciones.
JANITH SULAY JAIMES PABON GIOVANNY JIMÉNEZ GÓMEZ JOHN ANDRES AYALA ANGARITA SERGIO ANDRES ARAQUE BERMUDEZ GESTIÓN DE ALMACENAMIENTO SECUNDARIO.
Tema central: Distancia entre dos puntos Título: Aplica las propiedades de segmentos rectilíneos y polígonos.
UNIVERSIDAD DIEGO PORTALES Facultad de Ingeniería Programación Avanzada TIPOS ABSTRACTOS DE DATOS TAD Tema: TIPOS ABSTRACTOS DE DATOS TAD Subtema: LISTAS.
Programación Dinámica  La programación dinámica se suele utilizar en problemas de optimización, donde una solución está formada por una serie de decisiones.
G ESTIÓN DE LA MEMORIA Paginación y segmentación.
1 Tema 2.5 Cookies. Inicio 2 1.CookiesCookies La principal utilidad de las cookies (galletas) es la de solventar el problema de la falta de estado en.
Prof. Jonathan Silva Ingeniería Civil – Informática I Ingeniería Civil Informática I Clase 7 – Funciones y Procedimientos.
Bases de datos II Universidad del Cauca Ing. Wilson Ortega.
INSTITUCIÓN EDUCATIVA REPÚBLICA DDE VENEZUELA PLANO CARTESIANO 4°
UNIDAD II ESTÁTICA. OBJETIVO El alumno determinará las fuerzas en equilibrio que intervienen en un sistema mecánico industrial para asegurar su correcta.
ESCRIBIR en el mundo digital. HIPERTEXTO E s la presentación de la información como una red de nodos enlazados a través de los cuales los lectores pueden.
UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO FACULTAD DE INGENIERÍA COORDINACIÓN DE MATERIAS PROPEDÉUTICAS INGENIERÍA EN SISTEMAS ENERGÉTICOS SUSTENTABLES.
Transcripción de la presentación:

Clase II Estructuras dinámicas (TAD) Listas Enlazadas. ¿A que llamamos estructuras dinámicas? ¿Por qué son necesarias? Ventajas y Desventajas que tendremos con su uso. Composición de una estructura dinámica. ¿Que es un nodo? ¿Qué es una lista? Lista densa Lista enlazada Representación gráfica. ¿Cabeza de una lista? Operaciones con Listas Inserción de elementos. Borrado de elementos. Recorrido de la lista. Ejercicios

Lista: estructura de datos secuencial. Se clasifican en dependencia de la forma de acceder al siguiente elemento: lista densa: la propia estructura determina cuál es el siguiente elemento de la lista. Su tamaño no cambia en la ejecución del programa, es estático. Ejemplo: un array o vector. lista enlazada: la posición del siguiente elemento de la estructura la determina el elemento actual. Es necesario almacenar al menos la posición de memoria del primer elemento. Además es dinámica, es decir, su tamaño cambia durante la ejecución del programa.

Una lista enlazada se puede definir recursivamente de la siguiente manera: una lista enlazada es una estructura vacía o un elemento de información y un enlace hacia una lista (a un nodo, el primero). Gráficamente se suele representar así:

Como se ha dicho anteriormente, pueden cambiar de tamaño, pero su ventaja fundamental es que son flexibles a la hora de reorganizar sus elementos; a cambio se ha de pagar una mayor lentitud a la hora de acceder a cualquier elemento. En la lista de la figura anterior se puede observar que hay dos elementos de información, x e y. Supongamos que queremos añadir un nuevo nodo, con la información p, al comienzo de la lista. Para hacerlo basta con crear ese nodo, introducir la información p, y hacer un enlace hacia el siguiente nodo, que en este caso contiene la información x. ¿Qué ocurre si quisiéramos hacer lo mismo sobre un vector?. En ese caso sería necesario desplazar todos los elementos de información "hacia la derecha", para poder introducir el nuevo elemento, una operación muy engorrosa.

Cabeza de la Lista: Como no puede existir una referencia lógica sobre todos los datos que contiene la lista, pues sus elementos están almacenados en áreas no contiguas de memorias entrelazados, necesitamos tener almacenado la dirección del primer elemento de la lista para identificar que ese el primer elemento de la misma y a partir de este podremos encontrar los restantes. El lugar donde almacenamos esta información lo llamaremos Cabeza de la Lista.

Operaciones con Listas: Inserción al comienzo de una lista: Es necesario utilizar una variable auxiliar, que se utiliza para crear el nuevo nodo mediante la reserva de memoria y asignación de la clave. Posteriormente es necesario reorganizar los enlaces, es decir, el nuevo nodo debe apuntar al que era el primer elemento de la lista y a su vez debe pasar a ser el primer elemento. Notar que al introducir al comienzo de la lista, los elementos quedan ordenados en sentido inverso al de su llegada. Existe la variante de insertar en orden arbitrario, cual puede complicar el proceso de inserción, para estos casos es mejor garantizar que la lista este ordenada.

Inserción por la cabeza: Sea la siguiente lista: x y z vacia cab Y queremos insertar la infomación, w, para eso creamos un nodo y lo insertamos al inicio de la lista w x y z vacia cab

Seudo código INICIO Leer W Pedir memoria para representar el dato, area apuntada por aux. aux -> dato = W aux -> siguiente = vacio Si cab = vacio entonces cab = aux sino aux -> siguiente = cab cab = aux FinSi aux = vacio FIN

Operaciones con Listas: Borrado de elementos: es un proceso similar a la inserción, que tiene dos variantes, o al inicio, con proceso similar al explicado, o en un lugar arbitrario, pues depende de la posición del nodo en donde se encuentra el elemento a eliminar, también para este último caso como es un caso complejo, es conveniente mantener para ese tipo de operaciones la lista ordenada.

Borrado por la cabeza: Sea la siguiente lista, donde queremos eliminar la información x: y z vacia x cab

Seudo código INICIO Si cab != vacio entonces aux = cab cab = cab -> siguiente Liberar memoria apuntada por aux aux = vacio FinSi FIN

Operaciones con Listas: Recorrido de una lista: La idea es ir avanzando desde el primer elemento hasta encontrar la lista vacía. Antes de acceder a la estructura lista es fundamental saber si esa estructura existe, es decir, que no está vacía. En el caso de estarlo o de no estar inicializada es posible que el programa falle y sea difícil detectar donde, y en algunos casos puede abortarse inmediatamente la ejecución del programa, lo cual suele ser de gran ayuda para la depuración.Como se ha dicho antes, la lista enlazada es una estructura recursiva, y una posibilidad para su recorrido es hacerlo de forma recursiva. Por el hecho de ser un proceso recursivo se utiliza un procedimiento para hacer el recorrido. Nótese como antes de hacer una operación sobre el elemento se comprueba si existe. Esta no es la única forma existe también la forma iterativa, que para mucho es la mas fácil de implementar y es la recomendable por muchos especialistas.

Recorrido de una lista: Sea la siguiente lista: x y z vacia cab p x y z

Seudo código INICIO Si cab != vacio entonces aux = cab mientras aux != vacio visitar a aux -> dato aux = aux -> siguiente FinMientras FinSi FIN

Ejercicios: Haga en seudocódigo un algoritmo que nos permita contar la cantidad de elementos positivos y negativos que contiene una lista enlazada. Haga en seudocódigo un algoritmo que nos permita calcular el elemento mayor entre los elementos que contiene una lista enlazada.