TEMA 2 Estructuras de datos lineales

Documentos relacionados
4. Pilas ESTRUCTURAS DE DATOS 1

Estructura de Datos y de la Información

Tema 7: Árboles ESTRUCTURAS DE DATOS 1

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

Bloque III: Estructuras de datos no lineales

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

Profesor: José Miguel Rubio L.

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

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

1 Introducción a los algoritmos y a la programación de computadoras... 1

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

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

Estructuras Dinámicas de datos.

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

Tema 4- Representación Enlazada

UNIVERSIDAD TECNOLÓGICA DEL CHOCÓ Diego Luís Córdoba FACULTAD DE INGENIERÍA PROGRAMA DE INGENIERÍA EN TELECOMUNICACIONES E INFORMÁTICA

El TAD Árbol. El TAD Árbol

ESTRUCTURAS DE DATOS TEORÍA 2016/2017 PILAS

Práctica 4. TAD lista posicional

INDICE. Prólogo de la Segunda Edición

Programación TADs Colecciones Conjuntos, Diccionarios y Tablas

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

Algoritmos y Estructuras de Datos Curso 04/05. Ejercicios

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

Estructura de Datos. Índice

Unidad 2: Estructuras de Datos Tema III. Estructuras de datos Compuestas. Pilas, Colas y Listas implementadas con punteros

EJERCICIO 2 (3 PUNTOS) A) Sea el árbol binario AVL de la figura siguiente: B) Dada la estructura de la figura siguiente:

Estructuras de Datos y Algoritmos

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º. Nombre-Apellidos:

Biblioteca de templates. template <typename T> void eliminar(t arr[], int& len, int pos);

INDICE Parte I Algoritmos y herramientas de programación Capitulo 1. Computadoras y lenguajes de programación Actividades de Programación Resueltas

Tipos paramétricos y recursivos

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

Listas Posicionales. Listas posicionales

2. Tipos abstractos de datos TEMA 3: SEMÁNTICA AXIOMÁTICA. 2. Tipos abstractos de datos. 2. Tipos abstractos de datos. 2. Tipos abstractos de datos

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.

Listas ordenadas Implementación

Estructura de Datos. Listas Enlazadas

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.

SEGUNDA PARTE: TIPOS COMPLEJOS

Unidad III: Estructuras lineales

Programación de sistemas Listas enlazadas

Listas enlazadas. Programación de Sistemas

En las preguntas 1-30 indique la respuesta correcta. e= ninguna de las anteriores

CLASE 10 - ESTRUCTURAS DE DATOS DINÁMICAS

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

DEFINICIONES BÁSICAS DE LAS ESTRUCTURAS DE DATOS

Programación de sistemas

TIPO DE DATO ABSTRACTO (TDA)

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

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

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

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

INDICE Prologo Capitulo 1. Algoritmos y programas Capitulo 2. La resolución de los problemas con computadoras y las herramientas de programación

ESTRUCTURAS DE DATOS Y ALGORITMOS

Introducción: una simple colección

Práctica 2. TAD pila

Tema 7. Colas. José M. Badía, Begoña Martínez, Antonio Morales y José M. Badía. {badia, bmartine,

Departamento de Informática Universidad de Valladolid Campus de Segovia. TEMA 4: TIPOS ABSTRACTOS DE DATOS (TADs)

Tablas Asociativas (Hash) Tablas: filas & columnas de información Especificación algebraica

ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

Estructuras de Datos y Algoritmos

Razón de ser Computadora Programa Programador Análisis y solución de problemas (Metodología) Algoritmo Diagrama de flujo

Colas con prioridad, montículos y el heapsort. Lección 18

TAD. TAD Conjunto Análisis del TAD Conjunto Posibles implemantaciones A.E.D.

Listas, Pilas y Colas

3.Conocimientos previos requeridos 7.Estimación de la dedicación del alumno. 4.Contenidos mínimos. 1.Introducción. 2.Objetivos generales

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

Estructuras de datos lineales

Tema 2: Clases y Objetos

Estructuras de Datos

Tema 5. Tipos Abstractos de Datos

Estructura de datos Tema 2: Tipos Abstractos de Datos (TADs)

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

Tema 1. Abstracciones y Especificaciones

Instituto de Computación. Facultad de Ingeniería. Universidad de la República Examen de Programación 2 03 de Agosto de 2006 Generalidades:

324 MR Versión 1 1 Prueba Integral 1/6 Lapso UNIVERSIDAD NACIONAL ABIERTA Semana 12 VICERRECTORADO ACADÉMICO ÁREA INGENIERÍA

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

Tipo de dato Abstracto (Tad) PILAS COLAS

Resumen de los tipos abstractos de datos

Tipos Abstractos de Datos

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

Implementaciones de pilas, colas y afines. Memoria dinámica.

TAD Lineales: Pila, Cola y Lista

Solución práctico 6 Tipos Abstractos de Datos Lista, Pila y Cola

Capitulo V Listas Enlazadas

Definición de Memoria

2. Desarrolla una especificación informal genérica para el TAD árbol binario. Incluir operaciones para crear y modificar el árbol.

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

TAD Lineales: Pila, Cola y Lista

Estructuras de datos: Árboles binarios de

Estructura de Datos. Árboles Binarios de Búsqueda ABB. Primer Semestre, 2010

Listas, pilas, colas

Lista Simple con Puntero al Principio y Puntero al Final

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

UNIDAD 9. DATOS COMPLEJOS PILAS

Tipos lineales I. Tipos Lineales 2

Transcripción:

TEMA 2 Estructuras de datos lineales 1

Objetivos Conocer la especificación algebraica de las principales estructuras de datos lineales: Lista, pila y cola Conocer diferentes alternativas sobre el diseño e implementación de estructuras de datos lineales Conocer las cuestiones de rendimiento fundamentales sobre el uso de estructuras de datos lineales 2

Contenidos 2.0. Preliminares 2.1. Listas 2.2. Pilas 2.3 Colas 3

2.0 Preliminares Qué es una estructura de datos? Agrupación de datos relacionados Tienen asociados ciertas operaciones Ejemplos de estructuras de datos son: Arrays, registros, conjuntos y ficheros Algunas de sus operaciones: Arrays: operación de selección [ ] Registro: operación de selección. Conjunto: in, +, - Fichero: rewrite, reset, read, write 4

2.0 Preliminares: Estructuras de datos Pascal incorpora directamente estas estructuras de datos Cada nivel de abstracción de datos utiliza niveles de abstracción anteriores Podemos definir una jerarquía de datos Nivel 0 Nivel 1 Nivel 2 Nivel 3 Bit, Byte, Palabra Integer, Real, Char, Boolean Array, Registro Árbol, Lista, Pila Tipos de datos Estruct. datos TAD s 5

Una lista es una colección de elementos homogéneos dispuestos en orden En orden nos referimos a que a cualquier elemento (excepto al primero) le precede uno y le sigue otro (excepto al último) Cada elemento tiene asignada una posición Esta posición puede venir dada por una condición o no (por ejemplo dependiendo del valor del elemento, o un campo clave,...) 6

Supongamos que la lista puede albergar un número ilimitado de elementos y que no hay orden condicionado de elementos A nivel abstracto una lista puede considerarse como una secuencia de cero o más elementos y representarse enumerando dichos elementos: [1, 3, 5, 8, 4] o [1, [3, [5, [ 8, [4, [] ]]]]] [ c, a, e, b ] o [ c, [ a, [ e, [ b, [] ]]]] 7

La lista viene parametrizada por el tipo de elemento que alberga. Por ello el TipoElemento será un parámetro genérico del TipoLista Qué operaciones definimos para el TAD Lista? Posibles operaciones serán: CrearVacia, ListaVacia, Insertar, Suprimir, Longitud,... Especificación algebraica: 8

ESPECIFICACION Listas PARAMETROS GENERICOS TipoElemento FIN PARAMETROS GENERICOS TIPOS TipoLista OPERACIONES (* CONSTRUCTORAS GENERADORAS *) CrearVacia: TipoLista (* La lista vacía se suele representar por [ ] *) Construir: TipoElemento x TipoLista TipoLista (* OBSERVADORAS SELECTORAS *) PARCIAL Primero : TipoLista TipoElemento PARCIAL Resto : TipoLista TipoLista 9

(* OBSERVADORAS NO SELECTORAS *) EsVacia : TipoLista Booleano Longitud : TipoLista Natural PARCIAL Ultimo : TipoLista TipoElemento Pertenece : TipoElemento x TipoLista Booleano (* CONSTRUCTORAS NO GENERADORAS *) Concatenar : TipoLista x TipoLista TipoLista BorrarElemento: TipoElemento x TipoLista TipoLista InsertarFinal: TipoElemento x TipoLista TipoLista VARIABLES lista, lista2 : TipoLista; elemento, elem : TipoElemento; ECUACIONES DE DEFINITUD DEF(Primero (Construir (elemento, lista)) DEF(Resto (Construir (elemento, lista)) DEF(Ultimo (Construir (elemento, lista)) 10

ECUACIONES (* OBSERVADORAS SELECTORAS *) Primero (Construir (elemento,lista)) = elemento Resto (Construir (elemento,lista)) = lista (* OBSERVADORAS NO SELECTORAS *) EsVacia (CrearVacia) = CIERTO EsVacia (Construir (elemento,lista)) = FALSO Longitud (CrearVacia) = 0 Longitud (Construir (elemento,lista)) = 1 + Longitud (lista) Ultimo (Construir (elemento,lista)) = SI EsVacia (lista) Elemento Ultimo (lista) Pertenece (elem, CrearVacia) = FALSO Pertenece (elem, Construir (elemento,lista)) = (elem = elemento) Ó Pertenece (elem, lista) 11

ECUACIONES (Cont.) (* CONSTRUCTORAS NO GENERADORAS *) Concatenar (CrearVacia, lista) = lista Concatenar (Construir (elemento, lista), lista2) = Construir (elemento, Concatenar (lista, lista2)) BorrarElemento (elem, CrearVacia)= CrearVacia BorrarElemento (elem, Construir (elemento, lista))= SI elem = elemento Lista (elem, lista)) Construir (elemento, BorrarElemento InsertarFinal (elem, CrearVacia) = Construir (elem, CrearVacia) InsertarFinal (elem, Construir (elemento, lista)) = Construir (elemento, InsertarFinal (elem, lista)) FIN ESPECIFICACION 12

Dos alternativas para implementar la lista: mediante arrays (lista estática) o mediante punteros (lista dinámica). Las 2 alternativas son posibles y tienen diferentes ventajas e inconvenientes. Realización estática Ventajas: acceso directo Inconvenientes: inserción o eliminación en posiciones concretas respetando el orden 13

Realización dinámica Ventajas: la inserción y la eliminación de nodos Inconvenientes: acceso (secuencial) La forma de acceso especificada (primero y resto) deriva de la implementación habitual basada en punteros. Para acceder al tercer elemento: lista = [1, 3, 5, -8, 4] Primero (Resto (Resto (lista))) = 5 14

Dentro de todas las alternativas podemos distinguir: Vector almacen y elemento numero_de_elementos Vector de nodos (info + sig) simulando una lista enlazada Lista enlazada simple Lista ordenada Lista enlazada con inserción al final Lista circular Lista circular con componente cabecera Lista doblemente enlazada Lista doblemente enlazada con puntero al principio y al final 15

El TAD TipoListaOrdenada se puede derivar del TAD anterior. Gran parte del comportamiento es el mismo excepto que el usuario no podrá utilizar aquellas operaciones constructoras de listas que puedan alterar el orden Construir InsertarFinal Concatenar 16

ESPECIFICACION ListaOrdenada USA Listas TIPO TipoListaOrdenada OPERACIONES (* OPERACIONES CONSTRUCTORAS NO GENERADORAS *) InsertarOrd: TipoElemento x TipoListaOrdenada TipoListaOrdenada PARAMETROS GENERICOS OPERACIÓN Menor: TipoElemento x TipoElemento TipoElemento FIN PARAMETROS GENERICOS Mezclar: TipoListaOrdenada x TipoListaOrdenada TipoListaOrdenada VARIABLES: e, e1: TipoElemento lista, lista1: TipoListaOrdenada 17

ECUACIONES (* operaciones constructoras no generadoras *) InsertarOrd (e, CrearVacia) = Construir (e, CrearVacia) InsertarOrd (e, Construir (e1, lista)) = SI Menor (e1, e) Construir (e1, InsertarOrd (e, lista)) Construir (e, Construir (e1, lista)) Mezclar (CrearVacia, lista) = lista Mezclar (Construir (elem1, lista), lista1)) = InsertarOrd(elem1, Mezclar (lista, lista1)) FIN ESPECIFICACION 18