ELO3201 Contenedores Biblioteca Estándar de Templates Agustín J. González ELO320 Contenido Contenedores: Vector, List, Deque, Stack, Queue, Priority Queue,

Slides:



Advertisements
Presentaciones similares
Complejidad Computacional
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.
PILA.
ESTRUCTURA DE DATOS Unidad 03 PILAS.
ESTRUCTURA DE DATOS Unidad 03 COLAS.
Estructura de Datos Hugo Araya Carrasco Hugo Araya Carrasco.
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.
Estructuras de Datos (ARRAYS)
Tipos de Datos Básicos y Estructurados
Capitulo 3 Java util.
PROGRAMACION DE Pilas o Stacks y Colas
PROGRAMACION DE ESTRUCTURAS DE DATOS
UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Arreglos Ing. Nahiby Castillo.
Estructuras de Datos Especificación formal de Listas.
Tecnología de la Programación Javier Nieves Acedo Standar Template Library (STL)
Colas y Listas Enlazadas
Vectores en java.
COLAS, IMPLEMENTACIÓN A PARTIR DE LISTAS Y PARA PILAS
Pilas Una pila es una estructura lineal de elementos en donde se pueden agregar o eliminar datos únicamente por uno de los dos extremos. En consecuencia.
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.
Manejo de Excepciones Agustín J. González ELO329.
Matrices Es una estructura homogénea, compuesta por varios elementos, todos del mismo tipo y almacenados consecutivamente en memoria A cada elemento se.
ESTRUCTURAS DE DATOS I Conocer, comprender y analizar algunos de los principales tipos de estructuras de datos.
7.  El TDA Diccionario.
Vectors (Vectores) Agustin J. González ELO329. Contenidos Qué es un vector? Declaración de Objetos Vectores Inserción y eliminación de items Uso de sub-índices.
ESTRUCTURA DE DATOS EN JAVA
COMPUTACION 2009 Clase 6 Clase 7.
Clase 10: Estructuras de datos y arreglos.
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.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA SIETE GENERICOS Y COLECCIONES.
Aplicación de estructuras de datos
1 Asignación Dinámica de Memoria Agustín J. González Versión original de Kip Irvine ELO 329.
Clasificación de los TDA
Programación Orientada Objetos
Computación I Primer Semestre 2006 Capítulo IV Ciclos y Colecciones (con un sabor a algoritmos)
Informática Ingeniería en Electrónica y Automática Industrial
Agustín J. González ELO320: Estructura de Datos y Algoritmos
Laboratorio Análisis y Diseño de Algoritmos 2 Biblioteca estándar de templates de C++ Standard Template Library (STL)‏ Motivación Ejemplo: Lista + Iterador.
Programación en C para electrónicos
Algoritmos de Ordenamiento y Complejidad
1 Tablas HASH Agustín J. González ELO320: Estructura de Datos y Algoritmos.
Punteros Recomendado: 1. Nivelación Funciones
Programación en Visual Basic
Son estructuras de datos que almacenan y recuperan sus elementos atendiendo a un estricto orden (LIFO Last – in, first –out Ultimo en entrar – primero.
1 Asignación Dinámica de Memoria Agustín J. González ELO 329.
Capitulo 4 Arreglos o Arrays Unidimensionales Bidimensionales Strings
METODOS DE BUSQUEDA EN C++ Oscar Michel Ruiz León
Presente un cuestionario con los aspectos mas importantes sobre los
Introducción a los TADs
PROGRAMACION DE Pilas o Stacks
M.C. Meliza Contreras González
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.
ESTRUCTURAS LINEALES “LA PILA”
Pilas Grupo 4. 1 Stack o Pila Definición: Una pila es una estructura de datos, a la cual se le puede ingresar o sacar elementos por un sólo lado. También.
PROGRAMACION DE Pilas o Stacks y Colas
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.
ARRAYS Y COLECCIONES DE DATOS. ARRAYS Arrays – Matriz – Vector Elemento del lenguaje que nos permite agrupar un conjunto de valores del mismo tipo, y.
ESTRUCTURAS DE DATOS “Conceptualización de estructuras de datos” Por: Eduardo Robayo.
PROGRAMACION DE APLICACIONES EN MEMORIA DEL COMPUTADOR = ALGORITMOS Y ESTRUCTURAS DE DATOS.
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.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
Lenguaje de Programación II Prof. Rafael Montenegro B. Carrera: T.S.U en Informática Periodo: 2014-I.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Vectors (Vectores)‏ Agustín J. González ELO329.
Vectors (Vectores)‏ Agustín J. González ELO329.
Contenedores de la STL y Adaptadores de Contenedores
Transcripción de la presentación:

ELO3201 Contenedores Biblioteca Estándar de Templates Agustín J. González ELO320 Contenido Contenedores: Vector, List, Deque, Stack, Queue, Priority Queue, Set, Map Iteradores

ELO3202 Tipos para organizar colecciones (Contenedores)

ELO3203 Vectores Son una generalización de un arreglo Provee eficiente acceso aleatorio a elementos. Operaciones de alto nivel como incremento o reducción dinámica del tamaño. Acceso a un elemento toma tiempo O(1)

ELO3204 Strings En un sentido un string es un arreglo de caracteres En otro sentido es un tipo de dato de lato nivel enteramente diferente por su manipulación y tipo de operaciones. Hay muchas operaciones especificas para strings string aName = “Paula González”;

ELO3205 Listas (List) Su tamaño es arbitrario, su implementación hace un uso eficiente de la memoria al crecer o reducir su tamaño. Solo acceso secuencial. Eficiente inserción y remoción de cualquier posición. Deque (Double Ended Queue) Crece y se encoge según sea necesario Eficiente inserción y remoción de cada extremo Acceso aleatorio a elementos

ELO3206 Stacks y Queues Especializadas formas de colas doblemente enlazadas (deque) Stack es LIFO (Last in, First Out) Queue es FIFO (First in First Out)

ELO3207 Conjuntos: Sets Colección no ordenada de elementos Inserción, remoción y test de pertenencia en tiempo logarítmico Permite operaciones como Unión, diferencia. Existen también los Multiset que permiten mantener múltiples copias de cada elemento.

ELO3208 Colas de Prioridad Eficiente inserción de valores nuevos (logarítmica) Eficiente acceso al valor mas grande (o menor) (logarítmica) Remoción logarítmica de elementos. Asociaciones o mapeos: Map Colección pares de claves y valores Las claves pueden ser cualquier tipo de datos ordenable (los elementos se pueden comparar. Ej. String) Los valores pueden ser cualquier tipo Eficiente inserción, remoción, prueba de inclusión

ELO3209 Criterios para seleccionar un contenedor Como serán accedidos los elementos? Random => vector o deque ordenada => conjuntos o map secuencial => lista Es importante el orden en el cual los elementos son mantenidos? Ordenada => set puede ser ordenada => vector o cola depende de orden de inserción => stack o queue Cambiara el tamaño de la colección ampliamente durante la ejecución? Si => use list o set No => use un vector o deque Es posible estimar el tamaño de la colección? Si => use un vector Es la colección indexada? (la colección puede ser vista como una serie de pares claves/valor) índices son valores enteros => use vector o deque De otra manera use un map

ELO32010 Criterios para seleccionar un contenedor (cont.) Puede ser relacionados los valores? Set requieren operadores relacionales Vector o list no lo requieren Búsqueda y remoción del mas grande una operación frecuente? Si => use colas de prioridad (mas rápida que set) En que posiciones los valores son insertados o removidos de la colección? Inserciones en el medio de listas son eficientes Inserciones en el medio de un vector no lo son Stack y queue solo pueden insertar en extremos Es frecuente la operación de mezcla de dos o mas secuencias en una? Si datos son ordenados => use set De otra manera => use una list

ELO32011 Iteradores (iterators) Problema básico: ¿Cómo se accede a los elementos de una colección sin conocer como la colección esta organizada? Solución: la colección define un nuevo tipo de dato creado especialmente para lasos de repetición (for, while, etc) Un gran numero de algoritmos ya están implementados por la biblioteca estándar (STL). Todos ellos usan iteradores. ¿Cómo se describe un rango de valores? Normalmente se describe usando el valor de partida y el valor posterior al ultimo. El valor posterior al ultimo no es parte de la colección, solo una marca.

ELO32012 Operaciones con Iteradores Begin /end: Por convención, los contenedores retornan el valor de partida (una referencia en realidad) en respuesta a la función begin(), y retornan el valor posterior al ultimo con end(). Un iterador puede ser comparado por igualdad con otro iterador. Son iguales cuando apuntan a la misma posición. Un iterador se puede des-referenciar usando el operador *. De esta forma se accede al valor denotado por el iterador. Un iterador puede ser incrementado, así se referencia al próximo elemento en secuencia. Se usa operador ++.