Estructuras Dinámicas

Slides:



Advertisements
Presentaciones similares
TDA LISTA ESTRUCTURAS DE DATOS.
Advertisements

Unidad 5 Listas Enlazadas Bibliografía: Algoritmos y Estructuras de datos de Aguilar y Martinez. Unidad 9 Autor: Ing Rolando Simon Titiosky.
Listas enlazadas c++ Prof. Franklin Cedeño.
Type tipo_bf = ; tipo_dato = word; tipo_puntero = ^tipo_nodo; tipo_nodo = record dato: tipo_dato; izquierdo, derecho: tipo_puntero; bf: tipo_bf;
Tema 1. Introducción a la programación (Lenguaje java).
Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde1 Tipos definidos por el usuario –Punteros Tipo access:
Estructuras dinámicas de datos, TAD Lista, parte 2
Arboles Binarios de expresiones
Coloración de Grafos Planos
Tablas de Hash.
1 Estructuras de Datos Elementales:stacks (pilas), queues (colas), linked lists (listas enlazadas), y rooted trees (árboles con raíz) Agustín J. González.
Árboles Binarios Estructuras de Datos.
Estructura general de un programa en el servidor de Bases de Datos.
Contenido:  ¿Qué son los Punteros?  Los Procedimientos: New y Dispose.
Estructura de Datos..
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.
1 ListaUna Lista se define como una serie de N elementos E 1, E 2,..., E N, ordenados de manera consecutiva, es decir, el elemento E k (que se denomina.
Lenguaje de Programación II Prof. Rafael Montenegro B. Carrera: T.S.U en Informática Periodo: 2014-I.
AYUDANTÍA 2 Lenguaje Imperativo y Java. Punteros Dirección a memoria (puede apuntar a NULL). Permite trabajar con memoria (variables dinámicas de heap).
Análisis de los algoritmos Unidad 7. Análisis La resolución práctica de un problema – algoritmo o método de resolución – y por otra un programa o codificación.
Estructura de Datos Luis Humeau Waldi Saturno
L ISTAS ENLAZADAS M.IA. Daniel Alejandro García López.
Administración de Sistemas Gestores de Bases de Datos.
Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
Árboles binarios. Algoritmos básicos
Programación en C - manejo de Archivos
Estructuras PILA - COLA - LISTA.
Clase Práctica de Apareo
Montículos Binarios (Binary Heaps)
TAD’s ARBOLES GENERALIZADOS
Página Web del Lenguaje Pascal.
Clase Lista C++ Estándar
Listas enlazadas particulares
Estructura de Datos Introducción a:.
LISTAS..
Resolución de problemas y algoritmos
Unidad 7: Nivel Interno Algunos Conceptos Importantes
Estructuras de datos y algoritmos
Listas Dinámicas.
Tipos de Datos abstractos
Introducción a las estructuras de datos
LENGUAJE DE PROGRAMACION “PILAS”
Hardware Description Language
PILAS Una pila es una estructura de datos o lista de elementos, a la cual se le puede insertar o eliminar su contenido sólo por uno de sus extremos, llamado.
Diego Hernández R Pascal Variables Diego Hernández R
Manuel Montes y Gómez Laboratorio de Tecnologías del Lenguaje
Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2018
ABSTRACCION DE DATOS   Estructura de Datos Básicos: En programación una estructurad de datos, es una forma particular de organizar datos en una computadora.
Análisis y resolución de problemas
Estructuras de Datos Dinámicas
TEMAS *Arboles Binarios *listas Abiertas y Cerradas - Inserción - Recorrido - Eliminación *Pilas - Concepto - Inserción - Recorrido -
Listas ligadas Dra. María de Lourdes López García
UNIDAD 8 Agregar al Inicio
Colas ESTRUCTURA DE DATOS. Colas Definición. Es una lista lineal de elementos en la que las operaciones de insertar y eliminar se realizan en diferentes.
UNIDAD 3 LISTAS LISTAS CIRCULARES Integrantes: Galmiche Vera Orlando Mandujano González Ramón Enrique Salvador Magaña Kelyn Osmara.
Arboles. Árboles ¿Qué son? Son Estructuras de datos “No lineales”” ¿Para que se utilizan? Representar Fórmulas Algebraicas Organizar Objetos Inteligencia.
ÁRBOLES DE EXPRESION. Un árbol de expresión sirve para evaluar expresiones del tipo: (a+b)*c/d Para que un árbol represente una expresión se deben tomar.
Árboles Binarios Estructuras de Datos.
COLAS O LINEA DE ESPERA EN C# SHARP. ¿QUE ES UNA COLA O LINEA DE ESPERA?  Es una estructura de datos que almacena elemento en una lista y permite acceder.
Minimum Spanning Tree (Árbol de Expansión Mínima)
String, arreglos y arreglos bidimensionales
Diego Hernández R. Archivos Diego Hernández R.
String, arreglos y arreglos bidimensionales
Árboles Binarios Estructuras de Datos. Las estructuras dinámicas son las en la ejecución varia el número de elementos y uso de memoria a lo largo del.
UNIDAD 1 Análisis semántico 1.1 ARBOLES DE EXPRESIONES.
Departamento de Ingeniería de Sistemas e Industrial
ESTRUCTURA DE DATOS. COLECCIONES DE OBJETOS Una colección de objetos es sencillamente un conjunto de cosas del mismo tipo. Algunas veces utilizamos otras.
CICLOS. OPERADOR DE ASIGNACION COMPUESTA CICLO WHILE.
Transcripción de la presentación:

Estructuras Dinámicas Cambian de tamaño durante la ejecución del programa Es imposible reservar una cantidad fija de espacio de almacenamiento La reservación de memoria y asignación de direcciones se lleva a cabo mediante la asignación dinámica de almacenamiento Uso de apuntadores

Estructuras Dinámicas Están compuestas de pequeñas estructuras llamadas nodos o elementos, enlazadas mediante uno o más apuntadores a objetos del mismo tipo nodo DATO DATO Dependiendo del número de apuntadores y de las relaciones entre nodos podemos distinguir varios tipos de estructuras dinámicas

Estructuras Dinámicas LISTAS GRAFOS

Estructuras Dinámicas ÁRBOLES ... TABLAS DE HASH

Estructuras Dinámicas LISTAS Listas simplemente enlazadas Listas simplemente enlazadas con nodo cabecera Listas circulares doblemente enlazadas con nodo cabecera Listas doblemente enlazadas con nodo cabecera Listas circulares simplemente enlazadas Listas circulares simplemente enlazadas con nodo cabecera Listas circulares doblemente enlazadas

Estructuras Dinámicas OPERACIONES SOBRE LISTAS Insertar o añadir un elemento Eliminar un elemento Localizar un elemento

Estructuras Dinámicas Listas Simplemente Enlazadas La estructura más simple Conjunto de registros o nodos (no necesariamente adyacentes en memoria) Cada registro contiene un elemento y un apuntador a un registro que contiene su sucesor El apuntador del último registro de la lista contiene el valor nil Se requiere de un apuntador que referencie o apunte al primer elemento de la misma (¡nunca debe perderse!)

Estructuras Dinámicas Listas Simplemente Enlazadas a1 L a2 a3 a4 a5 L a1 500 a2 850 a3 350 a4 933 a5 nil 458 993

Estructuras Dinámicas Listas Simplemente Enlazadas Lista Vacía L nil

Estructuras Dinámicas Listas Simplemente Enlazadas Declaración Formal Tipo ptr_Nodo = pointer_to_Nodo;   Nodo = Tuple elemento: Tipo_info; prox: ptr_Nodo; end;   Lista = ptr_Nodo;

Estructuras Dinámicas Listas Simplemente Enlazadas Inserción Parámetros: Lista (L) , elemento (e), posición (p) La posición debe ser válida (1 <= p <= (Long(L) + 1) Considerar: Inserción en primera posición, al final de la lista, en lista vacía Procedimiento: Crear el nodo con el elemento Localizar la posición Actualizar los apuntadores involucrados

Estructuras Dinámicas Listas Simplemente Enlazadas Inserción a1 L a2 a3 a4 a5 ax Q a1 L a2 a3 a4 a5 ax Q Ant Act

Estructuras Dinámicas Listas Simplemente Enlazadas Inserción Proc Insertar(in-out L: Lista; in pos: integer; in e: Tipo_Info) Var Act, Ant, Q: ptr_Nodo; i: integer; begin Act  L; i  1; Crear(Q); Q.elemento  e; while (i < pos) do Ant  Act; Act  Act.prox; i  i + 1; end if Act = L then L  Q; else Ant.prox  Q; Q.prox  Act;

Estructuras Dinámicas Listas Simplemente Enlazadas Eliminación Parámetros: Lista (L) , elemento (e), posición (p) La posición debe ser válida (1 <= p <= (Long(L)) Considerar: Eliminación en primera posición, al final de la lista Procedimiento: Localizar la posición Actualizar los apuntadores involucrados Liberar el espacio ocupado por el nodo

Estructuras Dinámicas Listas Simplemente Enlazadas Eliminación a1 L a2 a3 a4 a5 Ant Act

Estructuras Dinámicas Listas Simplemente Enlazadas Proc Eliminar (in-out L: Lista; in pos: integer) Var Act, Ant: ptr_Nodo; i: integer; begin Act  L; i  1; while (i < pos) do Ant  Act; Act  Act.prox; i  i + 1; end if Act = L then L  Act.prox; else Ant.prox  Act.prox; Liberar(Act); Eliminación

Estructuras Dinámicas Listas Simplemente Enlazadas con nodo cabecera El primer nodo de la lista no contiene ningún elemento. La lista está referenciada por el apuntador contenido en el nodo cabecera Por lo general el nodo cabecera es del mismo tipo de los nodos restantes de la lista a pesar de que este no contiene ningún elemento de la misma

Estructuras Dinámicas Listas Simplemente Enlazadas con nodo cabecera L nodo cabecera a1 a2 a3 a4 Lista Vacía L nodo cabecera

Estructuras Dinámicas Listas Simplemente Enlazadas con nodo cabecera Declaración Formal Type ptr_Nodo = pointer_to Nodo;   Nodo = tuple elemento: Tipo_info; prox: ptr_Nodo; end;   Lista = ptr_Nodo;

Estructuras Dinámicas Listas Simplemente Enlazadas con nodo cabecera Inserción Parámetros: Lista (L) , elemento (e), posición (p) La posición debe ser válida (1 <= p <= (Long(L) + 1) No es necesario considerar a parte la inserción en la primera posición ni en una lista vacía Procedimiento: Crear el nodo con el elemento Localizar la posición Actualizar los apuntadores involucrados

Estructuras Dinámicas Listas Simplemente Enlazadas con nodo cabecera Inserción L a1 a2 a5 a6 Q ax L a1 a2 a3 a4 ax Q Ant Act

Estructuras Dinámicas Listas Simplemente Enlazadas con nodo cabecera Inserción Proc Insertar (in-out L: Lista; in pos: integer; in e: Tipo_Info) Var Act, Ant, Q: ptr_Nodo; i: integer; begin Act  L; i  1; Crear(Q); Q.elemento  e; while (i < pos) do Ant  Act; Act  Act.prox; i  i + 1; end Ant.prox  Q; Q.prox  Act;

Estructuras Dinámicas Listas Simplemente Enlazadas con nodo cabecera Eliminación Parámetros: Lista (L) , elemento (e), posición (p) La posición debe ser válida (1 <= p <= (Long(L)) No es necesario considerar a parte la eliminación del primer elemento de la lista Procedimiento: Localizar la posición Actualizar los apuntadores involucrados Liberar el espacio ocupado por el nodo

Estructuras Dinámicas Listas Simplemente Enlazadas con nodo cabecera Eliminación Ant Act L a1 a2 a3 a4 Ant Act L a1 a2 a3 a4

Estructuras Dinámicas Listas Simplemente Enlazadas con nodo cabecera Eliminación Proc Eliminar (in-out L: Lista; in pos: integer) Var Act, Ant: ptr_Nodo; i: integer; Begin Act  L; i  1; while (i < pos) do Ant  Act; Act  Act.prox; i  i + 1; end Ant.prox  Act.prox; Liberar(Act);

Estructuras Dinámicas Listas Simplemente Enlazadas con nodo cabecera Func Localizar(L: Lista; e: Tipo_Info): integer Var Act: ptr_Nodo; i, res: integer; begin Act  L.prox; i  1; while (Act  nil  Act.info  e) do Act  Act.prox; i  i + 1; end if Act = nil then res  -1; else res  i; return (res); Localizar