TAD Lineales: Pila, Cola y Lista

Tamaño: px
Comenzar la demostración a partir de la página:

Download "TAD Lineales: Pila, Cola y Lista"

Transcripción

1 TAD Lineales: Pila, Cola y Lista Objetivos Conocer los TAD lineales, su funcionamiento y aplicaciones Conocer la especificación de cada uno de ellos Saber realizar implementaciones alternativas Saber usar los tipos lineales para resolver problemas Conocer y utilizar los contenedores equivalentes de la STL Contenidos 2.1 Introducción a las estructuras lineales 2.2 El TAD Pila Conceptos Especificación algebraica Implementación Consideraciones sobre TAD basados en punteros El contenedor stack de la STL Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 1

2 TAD Lineales: Pila, Cola y Lista Contenidos 2.3 El TAD Cola Conceptos Especificación algebraica Implementación El contenedor queue de la STL El TAD Doble cola 2.4 El TAD Lista Conceptos Lista con índices Lista con iteradores Los contenedores vector y list de la STL Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 2

3 TAD Lineales: Pila, Cola y Lista Duración 5 clases (7.5 h) Bibliografía Data Structures and Algorithms in C++ Autor: Michael T. Goodrich, Roberto Tamassia, David M. Mount Editorial: John Wiley & Sons, Inc. Año: 2004 Págs Estructuras de datos y métodos algorítmicos Autor: Narciso Martí Oliet y otros Editorial : Prentice-Hall, 2004 Págs Diseño de programas. Formalismo y abstracción Autor: Ricardo Peña Marí Editorial : Prentice-Hall, 1999 Págs Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 3

4 TAD Lineales: Pila, Cola y Lista 2.1 Introducción a las estructuras lineales Estructuras lineales importantes porque aparecen con frecuencia en muchos problemas Ejemplos: una cola de clientes de un banco, la pila de ejecución de un programa, los caracteres de una cadena o las páginas de un libro Características: existe un elemento llamado primero existe un elemento llamado último cada elemento, excepto el primero, tiene un único predecesor cada elemento, excepto el último, tiene un único sucesor Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 4

5 TAD Lineales: Pila, Cola y Lista Operaciones básicas: crear la estructura vacía insertar un elemento borrar un elemento obtener un elemento Para definir claramente el comportamiento de la estructura es necesario determinar en qué posición se inserta un elemento nuevo y qué elemento se borra o se obtiene Principales estructuras lineales: pilas, colas y listas Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 5

6 TAD Pila 2.2 El TAD Pila Conceptos Una pila es un contenedor de objetos que son insertados y eliminados de acuerdo con el principio de que el último en entrar es el primero en salir (LIFO, Last Input First Output) Los elementos se insertan de uno en uno (apilar) Se sacan en el orden inverso al cual se han insertado (desapilar) El único elemento que se puede observar dentro de la pila es el último insertado (cima) Apilar a 3 a 2 a 1 Desapilar Cima de la pila Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 6

7 TAD Pila Aplicaciones: estructuras auxiliares en numerosos algoritmos y esquemas de programación: recorridos de árboles y grafos evaluación de expresiones conversión entre notaciones de expresiones (postfija, prefija, infija) gestión de los registros de activación de los subprogramas activos durante la ejecución de un programa los editores de texto proporcionan normalmente un botón deshacer que cancela las operaciones de edición recientes y restablece el estado anterior del documento. La secuencia de operaciones recientes se mantiene en una pila los navegadores permiten habitualmente volver hacia atrás en la secuencia de páginas visitadas. Las direcciones de los sitios visitados se almacenan en una pila Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 7

8 TAD Pila Especificación algebraica espec pilas usa booleanos parámetro formal género elemento fpf género pila operaciones creapila: pila apilar: pila elemento pila parcial desapilar: pila pila parcial cima: pila elemento vacía?: pila booleano dominios de definición p: pila; e: elemento ecuaciones p: pila; e: elemento desapilar (apilar (p, e)) = cima (apilar (p, e)) = vacia? (creapila) = vacia? (apilar (p, e)) = fespec Cons (pila) = Obs (pila) = Gen (pila) = Mod (pila) = Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 8

9 TAD Pila El conjunto de generadoras es libre, ya que cualquier término formado por las operaciones generadoras denota siempre un valor distinto del TAD Pila Los patrones necesarios para representar todas las posibles pilas se obtienen del conjunto de las operaciones generadoras creapila: representa la pila sin ningún elemento (pila vacía) apilar(p, e): representa cualquier pila con, al menos, un elemento Las operaciones desapilar y cima no están definidas para la pila vacía Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 9

10 TAD Pila Implementación Interfaz informal Paradigma TAD: Es necesario especificar el tipo independientemente de su implementación Una interfaz es una lista de métodos que cualquier implementación del tipo debe proporcionar Aunque C++ no soporta de forma adecuada la definición de interfaces, para cada tipo presentaremos una interfaz informal template <typename T> Pila { public: Pila(); bool esvacia() const; const T& cima() const throw(pilavaciaexcepcion); void apilar (const T& objeto); void desapilar() throw(pilavaciaexcepcion); } Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 10

11 TAD Pila Transformación de la notación algebraica a OO La operación constante creapila se convierte en el constructor de la clase El parámetro cuyo tipo es el que aparece en el género se convierte en el objeto sobre el que se aplica el método esvacía, cima y desapilar se transforman en métodos sin parámetros apilar se transforma en un método con un único parámetro Las operaciones parciales (cima y desapilar) se convierten en métodos que lanzan excepciones para el subconjunto del dominio para el que no están definidas Las operaciones observadoras (cima y vacía?) se implementan como métodos constantes Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 11

12 TAD Pila Mediante una tabla n indcima elementos e e 1 e 2 e 3 e n n-1... capacidad - 1 template <typename T> class PilaTabla { public: PilaTabla(int tam = 10); PilaTabla(const PilaTabla& p); bool esvacia() const; const T& cima() const throw(pilavaciaexcepcion); void apilar (const T& objeto) throw(pilallenaexcepción); void desapilar throw(pilavaciaexcepcion); ~PilaTabla (); private: int capacidad; T* elementos; int indcima; } Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 12

13 TAD Pila Consideraciones: si la pila no está vacía, el elemento almacenado en elementos[indcima - 1] corresponde a la cima de la pila elementos[0] fondo de la pila indcima = 0 pila vacía Ventaja: todas las operaciones de la interfaz tienen un coste temporal constante O(1) Inconvenientes: reservar espacio de memoria para el máximo previsto de elementos gestionar pila llena lanzar una excepción usar la clase vector de la STL Opciones para controlar la parcialidad o situaciones de error 1. controlar el posible error dentro de la operación 2. proporcionar suficientes operaciones para que el propio usuario evite el error (como sucede en la clase stack de la STL) Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 13

14 TAD Pila En C++, se puede hacer una reserva dinámica de la memoria para los arrays mediante el operador new Por esa razón, en la parte privada de la clase no se declara un tamaño para el array elementos Será el constructor el que reserve el espacio necesario en función del tamaño especificado como parámetro PilaTabla(int tam = 10) inicio indcima = 0; capacidad = tam; elementos = nuevo T[capacidad]; fin; Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 14

15 TAD Pila Constructor de copia para la clase PilaTabla PilaTabla(const PilaTabla& p) var int i; fvar; inicio fin; Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 15

16 TAD Pila Mediante una lista enlazada c e 1 e 2 e 3... template <typename T> class PilaEnlazada { typedef Nodo<T>* PtrNodo; public: PilaEnlazada(); PilaEnlazada(const PilaEnlazada& p); bool esvacia() const; const T& cima() throw(pilavaciaexcepcion) const; void apilar (const T& objeto); void desapilar throw(pilavaciaexcepcion); ~PilaEnlazada(); private: PtrNodo c; } Ventajas: todas las operaciones de la interfaz tienen un coste temporal constante O(1) no hay limitaciones de tamaño Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 16

17 TAD Pila Se define una clase Nodo, que representa a cada uno de los objetos que forman la lista enlazada template <typename T> class Nodo { typedef Nodo<T>* PtrNodo; public: Nodo(const T& objeto); Nodo(const T& objeto, PtrNodo psig); Nodo(const Nodo& n); const T& getobj() const; PtrNodo getsig() const; void setobj(const T& objeto); void setsig(ptrnodo psig); private: T obj; PtrNodo sig; } Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 17

18 TAD Pila Consideraciones sobre TAD basados en memoria dinámica Si se realiza una asignación entre dos variables de tipo puntero (ej., p = q), no se realiza una copia del valor del tipo (p.e. una pila completa), sino que se duplica la forma de acceder a ella p q p q Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 18

19 TAD Pila Constructor de copia para la clase PilaEnlazada PilaEnlazada(const PilaEnlazada& p) var PtrNodo pv, n, antn; fvar; inicio c = NULO; pv = p.c; si pv NULO entonces n = nuevo Nodo<T>(pv->getObj()); c = n; antn = n; pv = pv->getsig(); mientras pv NULO hacer n = nuevo Nodo<T>(pv->getObj()); antn->setsig(n); antn = n; pv = pv->getsig(); fmientras; fsi fin; Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 19

20 TAD Pila Cuando dejamos de necesitar una estructura dinámica, debemos ocuparnos de liberar la memoria En caso contrario, esos objetos seguirán existiendo en memoria aunque no podamos acceder a ellos (es el caso de la pila formada por los elementos de la figura anterior) Método destructor para la clase PilaEnlazada: ~PilaEnlazada() inicio mientras esvacia() hacer desapilar(); fmientras; fin; Método destructor para la clase PilaTabla: ~PilaTabla() inicio liberar [ ] elementos; fin; Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 20

21 TAD Pila El contenedor stack de la STL Uso: #include <stack> // stack<tipo_base> p; Operaciones básicas: stack() stack(const stack&) stack& operator=(const stack&) bool empty() const const tipo_base& top() const void push(const tipo_base&) void pop() constructor constructor de copia operador de asignación esvacia cima apilar desapilar Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 21

22 TAD Cola 2.3 El TAD Cola Conceptos Los elementos se añaden por el extremo final, y se eliminan por el extremo opuesto: frente El único elemento observable en todo momento es el primero que fue insertado Se le suele denominar estructura FIFO (First Input First Output). Aplicaciones Colas de trabajos a realizar por una impresora Asignación de tiempo de procesador a los procesos en un sistema multiusuario (sin prioridad) Simular situaciones reales: cajero automático, llamadas en espera,... Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 22

23 TAD Cola Especificación algebraica espec colas usa booleanos parámetro formal género elemento fpf género cola operaciones creacola: cola añadir: cola elemento cola parcial eliminar: cola cola parcial primero: cola elemento vacía?: cola booleano dominios de definición c: cola; e: elemento... Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 23

24 TAD Cola Las operaciones son: Gen (cola) = Mod (cola) = Obs (cola) = El conjunto de generadoras es libre? Los patrones necesarios para representar todas las posibles colas se obtienen del conjunto de las operaciones generadoras creacola: representa la cola sin ningún elemento (cola vacía) añadir(c, e): representa cualquier cola con, al menos, un elemento Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 24

25 TAD Cola ecuaciones c: cola; e: elemento eliminar (añadir (c, e)) = primero (añadir (c, e)) = vacia? (creacola) = vacia? (añadir (c, e)) = fespec Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 25

26 TAD Cola Implementación Interfaz informal template <typename T> Cola { public: Cola(); bool esvacia() const; const T& primero() const throw(colavaciaexcepcion); void añadir(const T& objeto); void eliminar() throw(colavaciaexcepcion); } Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 26

27 TAD Cola Cola primero último e 1 e 2 e n... Ventaja: todas las operaciones de la interfaz tienen un coste temporal constante O(1) template <typename T> class Cola { typedef Nodo<T>* PtrNodo; public: Cola(); Cola(const Cola& p); bool esvacia() const; const T& primero() const throw(colavaciaexcepcion); void añadir(const T& objeto); void eliminar() throw(colavaciaexcepcion); ~Cola(); private: PtrNodo primero, ultimo; } Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 27

28 TAD Cola Cola() inicio primero = ultimo = NULO; fin; void añadir(const T& objeto) var PtrNodo n; fvar; inicio n = nuevo Nodo<T>(objeto); si esvacia() entonces primero = n; sino ultimo->setsig(n); fsi; ultimo = n; fin; void eliminar() throw(colavaciaexcepcion); var PtrNodo inicio; fvar; inicio si esvacia() entonces lanzar ColaVaciaExcepcion(); fsi; inicio = primero; si primero == ultimo entonces ultimo = NULO; fsi; primero = primero->getsig(); liberar inicio; fin; Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 28

29 TAD Cola El contenedor queue de la STL Uso: #include <queue> // queue<tipo_base> c; Operaciones básicas: queue() queue(const queue&) queue& operator=(const queue&) bool empty() const const tipo_base& front() const void push(const tipo_base&) void pop() constructor constructor de copia operador de asignación esvacia primero añadir eliminar Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 29

30 TAD Cola El TAD Doble Cola Permite consultar, añadir y eliminar elementos en cualquiera de los dos extremos de la estructura lineal Recibe también el nombre de bicola Especificación algebraica espec dobles-colas usa booleanos, naturales parámetro formal género elemento fpf género doblecola operaciones Cons (doblecola) = Obs (doblecola) = Gen (doblecola) = Mod (doblecola) = creadc: doblecola +izq: elemento doblecola doblecola parcial -izq: doblecola doblecola parcial -dch: doblecola doblecola +dch: doblecola elemento doblecola parcial izq: doblecola elemento vacía?: doblecola booleano parcial dch: doblecola elemento... Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 30

31 TAD Cola dominios de definición e: elemento; c: doblecola -izq (+izq (e, c)) -dch (+izq (e, c)) izq (+izq (e, c)) dch (+izq (e, c)) ecuaciones e, e1, e2: elemento; c: doblecola +dch (creadc, e) = +dch (+izq (e1, c), e2) = -izq (+izq (e, c)) = -dch (+izq (e, c)) = esta ecuación es equivalente a las ecuaciones -dch (+izq (e, creadc)) = -dch (+izq ( e1, +izq (e2, c))) =... Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 31

32 TAD Cola izq (+izq (e, c)) = dch (+izq (e, c)) = esta ecuación es equivalente a las ecuaciones dch (+izq (e, creadc) = dch (+izq (e1, +izq (e2, c))) = vacía? (creadc) = vacía? (+izq (e, c)) = fespec Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 32

33 TAD Cola Implementación Interfaz informal template <typename T> DobleCola { public: DobleCola(); bool esvacia() const; const T& observarizq() const throw(doblecolavaciaexcepcion); const T& observarder() const throw(doblecolavaciaexcepcion); void añadirizq(const T& objeto); void añadirder(const T& objeto); void eliminarizq() throw(doblecolavaciaexcepcion); void eliminarder() throw(doblecolavaciaexcepcion); } Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 33

34 TAD Cola Lista simplemente enlazada Doble cola primero último Problema: eliminar el elemento de la derecha tiene un coste temporal lineal O(n) e 1 e 2 e n... Ventajas: Lista doblemente enlazada Doble cola primero último todas las operaciones de la interfaz tiene un coste temporal constante O(1) Los nodos centinelas simplifican las operaciones de inserción y eliminación... e 1 e 2 e n Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 34

35 TAD Cola Se define una clase DobleNodo, que representa a cada uno de los objetos que forman la lista doblemente enlazada template <typename T> class DobleNodo { typedef DobleNodo<T>* PtrDobleNodo; public: DobleNodo(); DobleNodo(PtrDobleNodo pant, PtrDobleNodo psig); DobleNodo(const T& objeto, PtrDobleNodo pant, PtrDobleNodo psig); DobleNodo(const DobleNodo& n); const T& getobj() const; PtrDobleNodo getsig() const; PtrDobleNodo getant() const; void setobj(const T& objeto); void setsig(ptrdoblenodo psig); void setant(ptrdoblenodo pant); private: T obj; PtrDobleNodo sig; PtrDobleNodo ant; } Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 35

36 TAD Cola La clase DobleCola template <typename T> class DobleCola { typedef DobleNodo<T>* PtrDobleNodo; public: DobleCola(); DobleCola(const Cola& p); bool esvacia() const; const T& observarizq() const throw(doblecolavaciaexcepcion); const T& observarder() const throw(doblecolavaciaexcepcion); void añadirizq(const T& objeto); void añadirder(const T& objeto); void eliminarizq() throw(doblecolavaciaexcepcion); void eliminarder() throw(doblecolavaciaexcepcion); ~DobleCola(); private: PtrDobleNodo primero, ultimo; } Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 36

37 TAD Cola DobleCola() inicio primero = nuevo DobleNodo<T>(); último = nuevo DobleNodo<T>(primero, NULO); primero->setsig(ultimo); fin; void eliminarder() throw (DobleColaVaciaExcepcion) var PtrDobleNodo p; fvar; inicio si esvacia() entonces lanzar DobleColaVaciaExcepcion(); fsi; p = ultimo->getant(); p->getant()->setsig(ultimo); ultimo->setant(p->getant()); liberar p; fin; void añadirizq(const T& objeto) var PtrDobleNodo n; fvar; inicio n = nuevo DobleNodo<T>(objeto, primero, primero->getsig()); primero->setsig(n); n->getsig()->setant(n); fin; Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 37

38 TAD Cola El contenedor deque de la STL Uso: #include <deque> // deque<tipo_base> dc; Operaciones básicas: deque() deque(const deque&) deque& operator=(const deque&) bool empty() const const tipo_base& front() const const tipo_base& back() const void push_front(const tipo_base&) void push_back(const tipo_base&) void pop_front() void pop_back() constructor constructor de copia operador de asignación esvacia observarizq observarder añadirizq añadirder eliminarizq eliminarder Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 38

39 TAD Lista 2.4 El TAD Lista Conceptos Generalización de los TAD Pila, Cola y Doble Cola Secuencia de elementos en la que se permite el acceso para consultar, añadir o eliminar elementos en cualquier posición Suelen utilizarse como base para la construcción de otros TAD y estructuras de datos: matrices dispersas (listas de listas) árboles n-arios (listas de nodos "hermanos") grafos (listas de adyacencia) Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 39

40 TAD Lista Existen diversas formas de generar las listas. En nuestro caso elegimos un conjunto de operaciones pequeño y libre Nos apoyamos en la definición recursiva de secuencia de elementos: colección de elementos del mismo tipo que: bien es vacío, en cuyo caso se denomina secuencia vacía bien se obtiene tras añadir por la izquierda un elemento a otra secuencia existente Operaciones generadoras Gen (lista) = [ ] +izq (e, l) Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 40

41 TAD Lista Lista con índices Existe una posición (índice) que sirve de referencia para las operaciones de inserción, consulta y modificación en cualquier posición Especificación algebraica espec listas usa booleanos, naturales parámetro formal género elemento operaciones _ == _: elemento elemento booleano _ _: elemento elemento booleano fpf género lista operaciones [ ]: lista parcial -izq: lista lista +izq: elemento lista lista parcial -dch: lista lista [ _ ] : elemento lista parcial izq: lista elemento _ & _ : lista lista lista parcial dch: lista elemento +dch: lista elemento lista longitud: lista natural vacía?: lista booleano está?: elemento lista booleano... Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 41

42 TAD Lista parcial insertar: lista nat elemento lista parcial eliminar: lista nat lista parcial modificar: lista nat elemento lista parcial _ [ _ ] : lista nat elemento parcial pos: elemento lista natural {insertar elemento i-ésimo} {eliminar elemento i-ésimo} {modificar elemento i-ésimo} {elemento i-ésimo} {posición del elemento} dominios de definición e: elemento; l: lista; i: natural -izq (+izq (e, l)) -dch (+izq (e, l)) izq (+izq (e, l)) dch (+izq (e, l)) insertar (l, i, e) está definido sólo si (1 i) (i long (l) + 1) eliminar (l, i) está definido sólo si (1 i) (i long (l)) modificar (l, i, e) está definido sólo si (1 i) (i long (l)) l[i] está definido sólo si (1 i) (i long (l)) pos (e, l) está definido sólo si está? (e, l)... Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 42

43 TAD Lista ecuaciones e, e1, e2: elemento; l: lista; i: natural [e] = [ ] & l = +izq (e, l1) & l2 = long ([ ]) = long (+izq (e, l)) = está? (e, [ ]) = está? (e1, +izq (e2, l)) = insertar ([ ], i, e) = insertar (+izq (e1, l), i, e2)) =... Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 43

44 TAD Lista eliminar (+izq (e, l), i) = modificar (+izq (e1, l), i, e2) = +izq (e, l) [i] = pos (e1, +izq (e2, l)) = fespec Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 44

45 TAD Lista Implementación Interfaz informal template <typename T> Lista { public: Lista(); bool esvacia() const; int longitud() const; void añadirizq(const T& objeto); void añadirdch(const T& objeto); void eliminarizq() throw(listavaciaexcepcion); void eliminardch() throw(listavaciaexcepcion); const T& observarizq() const throw(listavaciaexcepcion); const T& observardch() const throw(listavaciaexcepcion); void concatenar(const Lista& list); bool pertenece(const T& objeto) const; void insertar(int posicion, const T& objeto) throw(posicionerroneaexcepcion); void eliminar(int posicion) throw(posicionerroneaexcepcion); void modificar(int posicion, const T& objeto) throw(posicionerroneaexcepcion); const T& observar(int posicion) const throw(posicionerroneaexcepcion); int posicion(const T& objeto) const throw(objetoinexistenteexcepcion); ~Lista(); } Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 45

46 TAD Lista Lista simplemente enlazada La implementación más sencilla del TAD Lista es mediante una lista simplemente enlazada: primero ultimo... e 1 e 2 e n template <typename T> class Lista { public: // operaciones del TAD private: PtrNodo primero, ultimo; int num; } n num Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 46

47 TAD Lista En la siguiente tabla se observa el coste de las operaciones, para el peor caso, utilizando este tipo de representación operación coste operación coste añadirizq longitud eliminarizq pertenece observarizq insertar esvacía eliminar concatenar modificar añadirdch observar observardch posición eliminardch n longitud de la lista Cómo se podría mejorar el coste de la operación eliminardch? Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 47

48 TAD Lista Lista() inicio primero = ultimo = NULO; num = 0; fin; void añadirizq(const T& objeto); var PtrNodo n; fvar; inicio n = nuevo Nodo(objeto, primero); primero = n; si num == 0 entonces ultimo = n; fsi; num++; fin; void eliminardch() throw(listavaciaexcepcion); var PtrNodo anterior; fvar; inicio si esvacia() entonces lanzar ListaVaciaExcepcion(); fsi si num == 1entonces liberar primero; primero = ultimo = NULO; si no anterior = primero; mientras anterior->getsig() ultimo hacer anterior = anterior->getsig(); fmientras anterior->setsig(nulo); liberar ultimo; ultimo = anterior; fsi num--; fin; Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 48

49 TAD Lista Lista con iteradores Un iterador es una generalización del concepto de puntero Un iterador asociado a una lista está formado por: una lista L una posición en L (posición actual) un conjunto de operaciones para desplazar la posición actual dentro de L Un iterador abstrae los aspectos de la representación interna de la lista y, en general, de cualquier contenedor, durante los desplazamientos y accesos para lectura o escritura proporciona una interfaz de uso independiente del contenedor La ganancia en eficiencia de los iteradores se logra cuando se pretende realizar accesos sucesivos a elementos consecutivos de una lista Los accesos aleatorios mediante iteradores pueden no ser posibles o ser tan ineficientes como los accesos mediante índices Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 49

50 TAD Lista Especificación algebraica de iterador espec iteradores usa listas, naturales parámetro formal género elemento fpf género iterador operaciones inicio: lista iterador parcial avanzar: lista iterador iterador parcial observar: lista iterador elemento parcial posición: lista iterador natural dominios de definición e: elemento; l: lista; it: iterador avanzar (l, it) está definido sólo si 1 posición(l, it) longitud (l) observar (+izq(e, l), it) 1 posición (+izq(e,l), it) longitud (+izq(e,l)) it es iterador de la lista que interviene en cada operación ecuaciones l: lista; it: iterador posición (l, inicio (l)) = 1 posición (l, avanzar (l, it)) = 1 + posición (l, it) observar (l, it) = l[posición (l, it)] fespec Gen (iterador) = Obs (iterador) = NOTA: los iteradores pueden posicionarse desde el primer elemento de la lista hasta la posición siguiente al último elemento (denominaremos a esta posición final de lista) Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 50

51 TAD Lista Enriquecimiento de la especificación algebraica de lista con las operaciones con iteradores usa..., iteradores... operaciones parcial insertar: lista iterador elemento lista {inserta un elemento delante del iterador } parcial eliminar: lista iterador lista parcial modificar: lista iterador elemento lista parcial observar: lista iterador elemento principio: lista iterador final: lista iterador parcial poneriterador: lista natural iterador {elimina el elemento posicionado en el iterador} {modifica el elemento posicionado en el iterador} {obtiene el elemento posicionado en el iterador} {sitúa el iterador en el primer elemento de la lista} {sitúa el iterador en la posición siguiente al último elemento} {sitúa el iterador en la posición indicada por el parámetro} dominios de definición e: elemento; l: lista; it: iterador; n: natural insertar (l, it, e) está definido sólo si (1 posición(l, it)) (posición(l, it) longitud (l) + 1) eliminar (l, it) está definido sólo si (1 posición(l, it) (posición(l, it) longitud (l)) modificar (l, it, e) está definido sólo si (1 posición(l, it)) (posición(l, it) longitud (l)) observar (l, it) está definido sólo si (1 posición(l, it)) (posición(l, it) longitud (l)) poneriterador (l, n) está definido sólo si (1 n) (n longitud (l) + 1) it es iterador de la lista que interviene en cada operación Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 51

52 TAD Lista Ecuaciones para las nuevas operaciones: ecuaciones e: elemento; l: lista; n: natural; it: iterador principio (l) = final (l) = poneriterador (l, n) = Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 52

53 TAD Lista La semántica del resto de las operaciones con iteradores (insertar, eliminar, modificar y observar) se describe en función de las operaciones análogas con índices. Simplemente se utiliza como índice el resultado de la operación posición (l, it) Aunque tengan el mismo nombre, al tener parámetros distintos, entendemos que estamos haciendo sobrecargas de operaciones ecuaciones e: elemento; l: lista; it: iterador insertar (l, it, e) = eliminar (l, it) = modificar (l, it, e) = observar (l, it) = fespec Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 53

54 TAD Lista Implementación Interfaz informal template <typename T> Lista { public: void insertar(const Iterador& it, const T& objeto); void eliminar(const Iterador& it) throw(posicionerroneaexcepcion); void modificar(const Iterador& it, const T& objeto) throw(posicionerroneaexcepcion); const T& observar(const Iterador& it) const throw(posicionerroneaexcepcion); const Iterador& principio() const; const Iterador& final() const; {sitúa el iterador en la siguiente posición al último elemento} const Iterador& poneriterador(int posicion) const throw(indiceerroneoexcepcion); } template <typename T> Iterador{ public: void avanzar(const Lista& L) throw(posicionerroneaexcepcion); const T& observar(const Lista& L) const throw(posicionerroneaexcepcion); int posicion(const Lista& L) const; } Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 54

55 TAD Lista Como todos los tipos vistos hasta hora, los iteradores tienen una interfaz común, independientemente del contenedor al que va a estar asociado Sin embargo, su representación y la implementación de sus métodos dependerá de la representación elegida para el contenedor (en este caso para la lista) Con una implementación de lista simplemente enlazada, el iterador consiste en un puntero al nodo anterior para que las operaciones de inserción y borrado sean eficientes. Además, la lista debe tener un nodo centinela al principio para poder tratar al primer elemento Lista num primero último e 1... e n anterior Iterador En este gráfico vemos un iterador apuntando al elemento e 1. Este hecho representa, conceptualmente, al iterador posicionado en el elemento e 2 Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 55

56 TAD Lista template <typename T> class Lista { typedef Nodo<T>* PtrNodo; public: class Iterador { friend class Lista<T>; public: } void avanzar(const Lista& L) throw(posicionerroneaexcepcion); const T& observar(const Lista& L) const throw(posicionerroneaexcepcion); int posicion(const Lista& L) const; private: PtrNodo anterior; Iterador (PtrNodo i); }; void insertar(const Iterador& it, const T& objeto); void eliminar(const Iterador& it) throw(posicionerroneaexcepcion); void modificar(const Iterador& it, const T& objeto) throw(posicionerroneaexcepcion); const T& observar(const Iterador& it) const throw(posicionerroneaexcepcion); const Iterador& principio() const; const Iterador& final() const; const Iterador& poneriterador(int posicion) const throw(indiceerroneoexcepcion); private: PtrNodo primero, ultimo; int num; hacemos a la clase Lista amiga de la clase iterador para que los métodos de la clase Lista puedan acceder a su parte privada el constructor de iterador es privado para que sólo lo utilicen los métodos de la clase Lista La clase Iterador es una clase anidada de la clase Lista. Con esto se consiguen iteradores propios para cada TAD Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 56

57 TAD Lista Lista() inicio primero = ultimo = nuevo Nodo(); num = 0; fin; void insertar(const T& objeto, Iterador& it); inicio it.anterior->setsig(nuevo Nodo(objeto, it.anterior->getsig())); si (it.anterior == ultimo) entonces ultimo = it.anterior -> getsig(); fsi it.anterior = it.anterior->getsig(); num++; fin; void eliminar(const Iterador& it) throw(posicionerroneaexcepcion); inicio si (it.anterior->getsig() == NULL) lanzar PosicionErroneaExcepcion(); sino PtrNodo p = it.anterior->getsig(); si p = ultimo entonces ultimo = it.anterior; fsi it.anterior->setsig(p->getsig()); delete p; num--; fsi fin; const Iterador& principio() inicio devuelve nuevo Iterador (primero); fin; const Iterador& final() inicio devuelve nuevo Iterador (ultimo); fin; Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 57

58 TAD Lista Hay que tener un especial cuidado con el uso de iteradores: se puede emplear un iterador definido para una lista en operaciones con otra lista Puede evitarse incluyendo un tratamiento de excepciones que compruebe que el iterador pertenece a la lista con la que se quiere operar: recorriendo la lista hasta encontrar el nodo al que apunta el iterador: O(n) incluyendo en la implementación del iterador un puntero a la lista a la que pertenece: O(1) Lista num primero último e 1... e n lista anterior Iterador Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 58

59 TAD Lista Ejemplo de mejora de la eficiencia usando listas con iteradores: Se desea saber el número de veces que aparece un elemento en una lista template <typename T> int ocurrencias(const Lista<T>& L, const T& elemento) { } int cont = 0; for (int i = 1 ; i <= L.longitud(); i++) if (L.observar(i) == elemento) cont++; return (cont); (a) acceso por índice template <typename T> int ocurrencias(const Lista<T>& L, const T& elemento) { } int cont = 0; for (typename Lista<T>::Iterador it = L.principio(); it!= L.final(); it.avanzar(l)) if (it.observar(l) == elemento) cont++; return (cont); (b) acceso con iteradores Implementación dinámica con índices: Implementación dinámica con iteradores: Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 59

60 TAD Lista Los contenedores vector y list de la STL Características del contenedor vector: Es una secuencia que soporta acceso aleatorio en tiempo a constante a sus elementos mediante un índice Las inserciones y eliminaciones en el final se realizan en un tiempo de ejecución O(1) Las inserciones y eliminaciones al comienzo o en medio del vector tienen un coste temporal lineal El número de elementos en el vector puede variar de forma dinámica (la administración de memoria es automática) Características del contenedor list: Está implementado como una lista doblemente enlazada permite recorridos hacia delante y hacia atrás (define iteradores bidireccionales) Las inserciones y eliminaciones en los extremos se realizan en un tiempo de ejecución O(1) Las inserciones no invalidan los iteradores a elementos de la lista. Las eliminaciones sólo invalidan los iteradores que referencian a los elementos eliminados Las operaciones de borrado o eliminación pueden cambiar los predecedores o sucesores de los iteradores de una lista También existe el contenedor slist, que implementa una lista simplemente enlazada Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 60

61 TAD Lista El contenedor vector de la STL Operaciones básicas: vector() vector(const vector&) vector& operator=(const vector&) bool empty() const int size() const const tipo_base& operator[](int n) const void push_back(const T&) void pop_back() iterator begin() iterator end() iterator insert(iterator pos, const tipo_base& x) iterator erase(iterator pos) constructor constructor de copia operador de asignación esvacia longitud observar añadirder eliminarder Uso: #include <vector> // vector<tipo_base> v; devuelve un iterador al comienzo del vector devuelve un iterador al final del vector inserta x delante de pos elimina el elemento que ocupa la posición pos Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 61

62 TAD Lista El contenedor list de la STL Operaciones básicas: list() list(const list&) list& operator=(const lista&) bool empty() const int size() const iterator begin() iterator end() iterator insert(iterator pos, const tipo_base& x) iterator erase(iterator pos) Uso: #include <list> // list<tipo_base> l; constructor constructor de copia operador de asignación esvacia longitud devuelve un iterador al comienzo del vector devuelve un iterador al final del vector inserta x delante de pos elimina el elemento que ocupa la posición pos Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 62

63 TAD Lista El concepto de bidirectional iterator de la STL Expresiones válidas: *i *i = e ++i / i++ --i / i-- devuelve el elemento referenciado por el iterador i modifica el elemento referenciado por i avanza el iterador retrocede el iterador Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 63

TAD Lineales: Pila, Cola y Lista

TAD Lineales: Pila, Cola y Lista TAD Lineales: Pila, Cola y Lista Objetivos! Dar a conocer los TAD lineales pila, cola y lista! Presentar la especificación de cada uno de los TAD! Discutir implementaciones alternativas para cada uno de

Más detalles

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

Tema 8. Listas.  José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz Tema 8. Listas http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia, bmartine, morales, sanchiz}@icc.uji.es Estructuras de datos y de la información Universitat

Más detalles

El TAD Grafo. Objetivos. Contenidos

El TAD Grafo. Objetivos. Contenidos Objetivos q Estudiar la especificación del TAD Grafo q Presentar diferentes alternativas de implementación q Conocer los algoritmos más importantes de manipulación de grafos Contenidos 4.1 Conceptos 4.2

Más detalles

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

Ingeniera de Sistemas: Luz Esperanza Espitia Tutora de Estructura de datos. Ingeniera de Sistemas: Luz Esperanza Espitia Tutora de Estructura de datos. Con relación a la Estructura LISTA Indicar objetos reales que se puedan modelar con dicha estructura. Listas de Ordenes de visitas

Más detalles

Profesor: José Miguel Rubio L.

Profesor: José Miguel Rubio L. Profesor: José Miguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil en Informática Licenciado en Ciencias de la Ingeniería Técnico en Programación Oficina: 3-20 e-mail 1: jose.rubio.l@ucv.cl

Más detalles

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

UNIVERSIDAD AUTONOMA DE MADRID ESCUELA POLITÉCNICA SUPERIOR ESTRUCTURAS DE DATOS Y ALGORITMOS UNIVERSIDAD AUTONOMA DE MADRID ESCUELA POLITÉCNICA SUPERIOR ESTRUCTURAS DE DATOS Y ALGORITMOS Curso 2008-09 Examen parcial APELLIDOS: NOMBRE: 1. (0.5 puntos) Enumera las características de un algoritmo

Más detalles

El TAD Árbol. El TAD Árbol

El TAD Árbol. El TAD Árbol Objetivos! Presentar el árbol como estructura de datos jerárquica! Estudiar diferentes variantes de árboles, tanto en su especificación como en su implementación Contenidos 3.1 Concepto, definiciones y

Más detalles

Tipos Abstractos de Datos

Tipos Abstractos de Datos Objetivos Repasar los conceptos de abstracción de datos y (TAD) Diferenciar adecuadamente los conceptos de especificación e implementación de TAD Presentar la especificación algebraica como método formal

Más detalles

TEMA 3. Árboles. Objetivos. Contenidos. Bibliografía. Básica

TEMA 3. Árboles. Objetivos. Contenidos. Bibliografía. Básica TEMA 3. Árboles Objetivos En este tema se estudia una de las estructuras de datos no lineal más importante en computación, el árbol. Comenzaremos introduciendo la terminología asociada a los árboles y

Más detalles

Tema 6. Gestión dinámica de memoria

Tema 6. Gestión dinámica de memoria Tema 6. Gestión dinámica de memoria http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia, bmartine, morales, sanchiz@icc.uji.es Estructuras de datos y de la

Más detalles

Algoritmos y Estructuras de Datos Pilas LIFO y Colas FIFO. Guillermo Román Díez

Algoritmos y Estructuras de Datos Pilas LIFO y Colas FIFO. Guillermo Román Díez Algoritmos y Estructuras de Datos Pilas LIFO y Colas FIFO Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2015-2016 Guillermo Román, UPM AED: Pilas LIFO y Colas FIFO 1/12

Más detalles

Unidad III: Estructuras lineales

Unidad III: Estructuras lineales Unidad III: Estructuras lineales Listas En Ciencias de la Computación, una lista enlazada es una de las estructuras de datos fundamentales, y puede ser usada para implementar otras estructuras de datos.

Más detalles

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

Segundo Parcial de Programación 2 7 de junio de 2017 Instituto de Computación. Facultad de Ingeniería. Universidad de la República Segundo Parcial de Programación 2 7 de junio de 2017 Problema 1 (30 puntos) Considere un TAD T que permita almacenar a lo sumo

Más detalles

Un elemento de cualquier clase llamada Info; Un puntero a un nuevo nodo llamado sig; De tal forma una unión de nodos hace que tengamos una lista:

Un elemento de cualquier clase llamada Info; Un puntero a un nuevo nodo llamado sig; De tal forma una unión de nodos hace que tengamos una lista: Tipos Abstractos de Datos: TAD Lista en educación Profesional 1.- Introducción Los tipos abstractos de datos son fundamentales para la informática puesto que de ellos se sirven todos los programas para

Más detalles

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

Estructura de datos y algoritmos. Tema IV: TIPOS DE DATOS ABSTRACTOS DINÁMICOS LINEALES Estructura de datos y algoritmos Tema IV: TIPOS DE DATOS ABSTRACTOS DINÁMICOS LINEALES TIPOS DE DATOS ABSTRACTOS DINÁMICOS LINEALES 4.1 Introducción 4.2 Ejemplos de TDA dinámicos lineales 4.3 Pilas 4.3.1

Más detalles

Estructuras Dinámicas de datos.

Estructuras Dinámicas de datos. Estructuras Dinámicas de datos. Las estructuras dinámicas de datos son estructuras que crecen a medida que ejecuta un programa. Una estructura dinámica de datos es una colección de elementos llamadas nodos

Más detalles

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

Solución práctico 6 Tipos Abstractos de Datos Lista, Pila y Cola Objetivos Trabajar sobre el Tipo Abstracto de Datos Lista, reforzando el desacople entre especificación e implementación. Retomar las implementaciones vistas, como ser Listas Doblemente Encadenadas, Listas

Más detalles

Tipos Recursivos de Datos

Tipos Recursivos de Datos 1/1 Tipos Recursivos de Datos Josefina Sierra Santibáñez 27 de noviembre de 2016 2/1 Introducción La recursividad no sólo se puede aplicar a la definición de procedimientos (i.e. funciones o acciones),

Más detalles

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

Estructura de Datos. Unidad de Aprendizaje: Unidad de Competencia II: Estructuras de Datos Lineales. M. en C. Edith Cristina Herrera Luna Ingeniería en Computación Unidad de Aprendizaje: Estructura de Datos Unidad de Competencia II: Estructuras de Datos Lineales Marzo 2015 M. en C. Edith Cristina Herrera Luna ESTRUCTURAS DE DATOS Propósito

Más detalles

Pilas, Colas. Andrea Rueda. Estructuras de Datos. Pontificia Universidad Javeriana Departamento de Ingeniería de Sistemas

Pilas, Colas. Andrea Rueda. Estructuras de Datos. Pontificia Universidad Javeriana Departamento de Ingeniería de Sistemas Pilas, Colas Estructuras de Datos Andrea Rueda Pontificia Universidad Javeriana Departamento de Ingeniería de Sistemas Quiz: STL Quiz: STL Standard Template Library (STL) std::vector - Arreglo dinámico,

Más detalles

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

Tema 7- Modelo y Aplicación de Pila, Cola y. Tema 7- Modelo y Aplicación de. Lista Con Punto de Interés Tema - Modelo y Aplicación de Pila, Cola y Lista con Punto de Interés Tema - Modelo y Aplicación de Pila, Cola y Lista con Punto de Interés Índice general:. Modelo y Aplicación de Lista con Punto de Interés

Más detalles

Memoria en C++ Punteros - Referencias Clases Y ahora, a trabajar! Memoria Dinámica en C++

Memoria en C++ Punteros - Referencias Clases Y ahora, a trabajar! Memoria Dinámica en C++ Qué es una variable? Variables Memoria Matemática: una etiqueta que representa a un valor en una expresión: f (y) = y 2 + 2y Programación: Nombre simbólico dado a un valor residente en la memoria. Propiedades

Más detalles

PILAS Fundamentos

PILAS Fundamentos Alg. y Estr. Datos-I / Fund. Progr.-II (R. Ferrís, J. Albert) 11 PILAS 11.1 Fundamentos En este tema y en el siguiente se analizarán las estructuras de datos lineales pilas y colas. Las pilas y las colas

Más detalles

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. Tipos de datos dinámicos: Punteros Asignación dinámica de memoria. Uso de punteros. Inicialización y asignación de punteros. Procedimientos para asignación y liberación de memoria. Tipos de datos recursivos.

Más detalles

Librerías estándar en C++ STL: Standard Template Library. Álvaro Sánchez Miralles José Porras (Fidel Fernández)

Librerías estándar en C++ STL: Standard Template Library. Álvaro Sánchez Miralles José Porras (Fidel Fernández) Librerías estándar en C++ STL: Standard Template Library Álvaro Sánchez Miralles José Porras (Fidel Fernández) Cadenas de caracteres Es una clase que se encuentra en librería estandar Consta,

Más detalles

Estructura de Datos. Listas Enlazadas

Estructura de Datos. Listas Enlazadas Estructura de Datos Listas Enlazadas Conceptos de Lista enlazada Una lista enlazada es una secuencia de nodos que se interconectan mediante sus campos de enlace. Nodo: un objeto creado desde una clase

Más detalles

ESTRUCTURAS DE DATOS II

ESTRUCTURAS DE DATOS II ESTRUCTURAS DE DATOS II Ingeniería Técnica en Informática de Gestión Ingeniería Técnica en Informática de Sistemas CURSO 2005/06 NÚMERO DE CRÉDITOS 6,75 CURSO SEGUNDO CUATRIMESTRE 2º HORAS SEMANALES TEÓRICO-PRÁCTICAS

Más detalles

ESTRUCTURAS DINÁMICAS DE DATOS (PILAS)

ESTRUCTURAS DINÁMICAS DE DATOS (PILAS) 200 UNAN LEON Departamento de Computación Ingeniería en Sistema y Telemática Docente: Ing. Juan Carlos Antón S. Asignatura: Algoritmo y Estructuras de Datos ESTRUCTURAS DINÁMICAS DE DATOS (PILAS) Pilas

Más detalles

Estructuras de Datos y Algoritmos

Estructuras de Datos y Algoritmos Estructuras de Datos y Algoritmos Tema 4.3. Tipos de datos lineales. Listas Prof. Dr. P. Javier Herrera Contenido Listas: Conceptos generales Operaciones básicas Especificación algebraica Implementación

Más detalles

PROGRAMA EDUCATIVO INFORMATICA ADMINISTRATIVA

PROGRAMA EDUCATIVO INFORMATICA ADMINISTRATIVA PROGRAMA EDUCATIVO INFORMATICA ADMINISTRATIVA UNIDAD DE APRENDIZAJE ADMINISTRACION DE BASES DE DATOS Unidad de competencia III Manejar las estructuras dinámicas en memoria secundaria Arboles ELABORACION

Más detalles

Hoja de ejercicios del Tema 9

Hoja de ejercicios del Tema 9 Facultad de Informática Universidad Complutense Fundamentos de la programación Curso 2013 2014 Hoja de ejercicios del Tema 9 1. Sin ejecutarlo, qué mostraría el siguiente código? int x = 5, y = 12, z;

Más detalles

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

ESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota: Nombre y apellidos: Nota: Escribe tu nombre y apellidos en esta hoja e inmediatamente en todas las suplementarias, incluso las de sucio. El no hacerlo puede suponer tu expulsión Puedes utilizar el lápiz

Más detalles

GESTIÓN DE MEMORIA DINÁMICA

GESTIÓN DE MEMORIA DINÁMICA UNIVERSIDAD DE MÁLAGA Dpto. Lenguajes y CC. Computación E.T.S.I. Telecomunicación GESTIÓN DE MEMORIA DINÁMICA Tema 3 Programación II Programación II 0 Tema 3: GESTIÓN DE MEMORIA DINÁMICA Tema 3: GESTIÓN

Más detalles

4. Pilas ESTRUCTURAS DE DATOS 1

4. Pilas ESTRUCTURAS DE DATOS 1 4. Pilas Una Pila es una colección de elementos homogéneos dispuestos en orden tal que se recuperan en orden inverso a como se introdujeron. La extracción e inserción de elementos en la Pila se realiza

Más detalles

Práctica 2. TAD pila

Práctica 2. TAD pila Objetivos. Práctica. TAD pila Se trata de construir el TAD PILA con dos implementaciones (una acotada y otra no acotada sin cabecera) que compartirán el mismo módulo de definición. Haciendo importación

Más detalles

3.3. PILAS 1. stack(const queue &original); /* Pre: cierto */ /* Post: Construye una pila que es una copia de "original". */

3.3. PILAS 1. stack(const queue &original); /* Pre: cierto */ /* Post: Construye una pila que es una copia de original. */ 3.3. PILAS 1 3.3. Pilas Una Pila es una estructura de datos lineal que sólo permite insertar, eliminar y consultar elementos en uno de sus extremos, que denominamos cima. Es, por tanto, una estructura

Más detalles

Tipos Abstractos de Datos

Tipos Abstractos de Datos Objetivos! Introducir el mecanismo de abstracción y justificar la necesidad de los TAD! Diferenciar adecuadamente los conceptos de especificación e implementación de TAD! Presentar la especificación algebraica

Más detalles

PILAS. Prof. Ing. M.Sc. Fulbia Torres

PILAS. Prof. Ing. M.Sc. Fulbia Torres S ESTRUCTURAS DE DATOS 2006 Prof. UNIDAD II ESTRUCTURAS DE DATOS PILAS Definición. Operaciones. Implementación secuencial. Aplicaciones. Ejemplos. Ejercicios. DEFINICIÓN Una PILA (o stack) es una estructura

Más detalles

11. PILAS Introducción Fundamentos

11. PILAS Introducción Fundamentos 11. PILAS 11.0 INTRODUCCIÓN... 31 11.1 FUNDAMENTOS... 31 11.2. REPRESENTACIÓN DE LAS PILAS EN C++... 32 Implementación mediante estructuras estáticas... 36 Implementación mediante estructuras dinámicas...

Más detalles

1.2.4 Listas enlazadas

1.2.4 Listas enlazadas 1.2.4 Listas enlazadas Las listas enlazadas son tipos de datos dinámicos que se construyen con nodos. Un nodo es un registro con al menos, dos campos, uno de ellos contiene las componentes y se le denomina

Más detalles

3.3. Pilas 3.3. PILAS 3

3.3. Pilas 3.3. PILAS 3 3.3. PILAS 3 3.3. Pilas Una Pila es una estructura de datos lineal que sólo permite insertar, eliminar y consultar elementos en uno de sus extremos, que denominamos cima. Es, por tanto, una estructura

Más detalles

El TAD Grafo. El TAD Grafo

El TAD Grafo. El TAD Grafo Objetivos! Estudiar la especificación del TAD Grafo! Presentar diferentes alternativas de implementación! Conocer los algoritmos más importantes de manipulación de grafos Contenidos.1 Conceptos. Especificación

Más detalles

Segundo parcial de Programación 2

Segundo parcial de Programación 2 Generalidades: Segundo parcial de Programación 2 a. La prueba es individual y sin material. b. La duración es 3hs. c. Sólo se contestan dudas acerca de la letra. 8 de Julio de 2016 d. Escriba las hojas

Más detalles

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

ÍNDICE 1. Índice Listas ordenadas Operaciones permitidas Pilas Operaciones permitidas... ÍNDICE 1 Índice Índice 1 1. Introducción 2 2. Estructuras de datos 3 2.1. Consideraciones generales a todas las estructuras de datos......... 3 2.2. Listas...................................... 3 2.2.1.

Más detalles

Ejercicio 1 (proyecto prlistas, paquete listas)

Ejercicio 1 (proyecto prlistas, paquete listas) PRÁCTICA 3 Curso 2004-05 En esta práctica construiremos y usaremos dos paquetes: el primero, listas, que implementa listas genéricas y el segundo, colas, que implementa colas y colas de prioridades genéricas.

Más detalles

Eduardo Mosqueira Rey Bertha Guijarro Berdiñas Mariano Cabrero Canosa

Eduardo Mosqueira Rey Bertha Guijarro Berdiñas Mariano Cabrero Canosa Estructura de Datos y de la Información Eduardo Mosqueira Rey Bertha Guijarro Berdiñas Mariano Cabrero Canosa Laboratorio de Investigación y Desarrollo en Inteligencia Artificial Departamento de Computación

Más detalles

Algoritmos y Estructuras de Datos Iteradores. Guillermo Román Díez

Algoritmos y Estructuras de Datos Iteradores. Guillermo Román Díez Algoritmos y Estructuras de Datos Iteradores Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2015-2016 Guillermo Román, UPM AED: Introducción 1/26 Iteradores Es muy común

Más detalles

TAD: Pila. TALLER: TAD Pila

TAD: Pila. TALLER: TAD Pila TALLER: TAD Una pila (stack) es un conjunto de elementos del mismo tipo que solamente puede crecer o decrecer por uno de sus extremos. Una pila también se la conoce con el nombre de estructura de tipo

Más detalles

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

Tema 03: TAD Cola. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom Tema 03: TAD Cola M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom (Prof. Edgardo A. Franco) 1 Contenido Descripción del TAD Cola Especificación

Más detalles

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

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 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 distribución. Listas Enlazadas Estructuras de datos dinámicas

Más detalles

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

LISTAS. Prof. Ing. M.Sc. Fulbia Torres LISTAS ESTRUCTURAS DE DATOS 2006 Prof. UNIDAD II ESTRUCTURAS DE DATOS LISTAS Definición. Representación de Listas. Lista Lineal Simplemente Enlazada. Operaciones TAD LLSE. Implementación Dinámica. Otras

Más detalles

12. COLAS Introducción Fundamentos

12. COLAS Introducción Fundamentos Ricardo Ferrís Castell Algoritmos y Estructuras de Datos I 12. COLAS 12.0 INTRODUCCIÓN...41 12.1 FUNDAMENTOS...41 12.2. REPRESENTACIÓN DE LAS COLAS EN C++...42 Implementación mediante estructuras estáticas:

Más detalles

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

Estructuras de Datos y Algoritmos Tema 3: Arrays y listas enlazadas Estructuras de Datos y Algoritmos Tema 3: Arrays y listas enlazadas Departamento de Informática Universidad de Valladolid Curso 2011-12 Grado en Ingeniería Informática Grado en Ingeniería Informática de

Más detalles

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

Biblioteca de templates. template <typename T> void eliminar(t arr[], int& len, int pos); ALGORITMOS Y ESTRUCTURA DE DATOS Machete Oficial 2014 Operaciones sobre arrays Biblioteca de templates Función: agregar Agrega el valor v al final del array arr e incrementa su longitud len. void agregar(t

Más detalles

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

Estructura de datos y de la información Boletín de problemas - Tema 10 Estructura de datos y de la información Boletín de problemas - Tema 10 1. En el caso de que sea posible, dar un ejemplo de los siguientes puntos. Si no, explicar por qué no lo es. Considerar un valor genérico

Más detalles

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. Tipos de datos dinámicos: Punteros Asignación dinámica de memoria. Uso de punteros. Inicialización y asignación de punteros. Procedimientos para asignación y liberación de memoria. Tipos de datos recursivos.

Más detalles

Implementación de las Clases Pila, Cola, Lista y Arbol

Implementación de las Clases Pila, Cola, Lista y Arbol 1/1 Implementación de las Clases Pila, Cola, Lista y Arbol Josefina Sierra Santibáñez 28 de noviembre de 2017 2/1 Implementación de Estructuras de Datos Implementaremos cada estructura de datos en dos

Más detalles

Clases y Objetos en C++

Clases y Objetos en C++ Informática II Clases y Objetos en C++ Introducción Las variables de los tipos fundamentales de datos no son suficientes para modelar adecuadamente objetos del mundo real. alto, ancho y longitud para representar

Más detalles

Tema 8- Implementación de Pila, Cola y. Tema 8- Implementación de Pila, Cola y Lista con Punto de Interés. Representación Eficaz de una EDA

Tema 8- Implementación de Pila, Cola y. Tema 8- Implementación de Pila, Cola y Lista con Punto de Interés. Representación Eficaz de una EDA Tema 8- Implementación de Pila, Cola y Lista con Punto de Interés Tema 8- Implementación de Pila, Cola y Lista con Punto de Interés Índice general: 1. Representación Eficaz de una EDA Lineal 2. Implementación

Más detalles

Programación de sistemas Pilas y Colas

Programación de sistemas Pilas y Colas Programación de sistemas Pilas y Colas Departamento de Ingeniería Telemática 1 Contenidos Pilas (stacks) Colas (queues) Colas dobles (deques double-ended queues) 2 Pilas Estructura de datos lineal Inserción

Más detalles

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.

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. 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. No hay que confundir una dirección de memoria con el contenido

Más detalles

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

Universidad Autónoma del Estado de México 2016, Año del 60 Aniversario de la Universidad Autónoma del Estado de México Universidad Autónoma del Estado de México 2016, Año del 60 Aniversario de la Universidad Autónoma del Estado de México Unidad Académica Profesional Tianguistenco Ingeniería de Software Estructura de Datos

Más detalles

12. LISTAS Introducción Listas con punto de interés

12. LISTAS Introducción Listas con punto de interés 12. LISTAS 12.1. INTRODUCCIÓN... 1 12.2. LISTAS CON PUNTO DE INTERÉS... 1 12.3. IMPLEMENTACIÓN DE LA CLASE LISTA EN C++... 5 12.3.1 Implementación de la clase LISTA en C++ con vectores... 6 12.3.2 Implementación

Más detalles

ESTRUCTURAS DINÁMICAS DE DATOS (COLAS) EN C

ESTRUCTURAS DINÁMICAS DE DATOS (COLAS) EN C 2013 ESTRUCTURAS DINÁMICAS DE DATOS (COLAS) EN C Departamento de Computación UNAN-León TEMA 5: ESTRUCTURAS DINÁMICAS DE DATOS (COLAS) 5.1 INTRODUCCIÓN: Las colas son secuencias de elementos caracterizadas

Más detalles

EDA. Tema 8 Colas de Prioridad: Heaps

EDA. Tema 8 Colas de Prioridad: Heaps EDA. Tema 8 Colas de Prioridad: Heaps Natividad Prieto Sáez. DSIC EDA, T-8. Curso 02/03. N.Prieto p.1/55 Objetivos Estudio de las definiciones asociadas a las Colas de Prioridad: Especificación: operaciones

Más detalles

Tema 5. Estructura de datos Pila

Tema 5. Estructura de datos Pila Tema 5. Estructura de datos Pila http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia, bmartine, morales, sanchiz}@icc.uji.es Estructuras de datos y de la

Más detalles

Estructuras de Datos Lineales y Arborescentes

Estructuras de Datos Lineales y Arborescentes 1/1 Estructuras de Datos Lineales y Arborescentes Josefina Sierra Santibáñez 25 de marzo de 2017 2/1 Estructuras de Datos Lineales y Arborescentes En este tema se utilizan estructuras de datos genéricas

Más detalles

Programación TADs Lineales Lista Pila Cola

Programación TADs Lineales Lista Pila Cola Programación 2 7- TADs Lineales Lista Pila Cola 1 TAD LISTA 2 Definición Hemos visto la definición inductiva de listas. Más precisamente, definimos inductivamente los tipos Alista, para cualquier tipo

Más detalles

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

Tema 02: TAD Pila. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom Tema 02: TAD Pila M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1 Contenido Descripción

Más detalles

Listas enlazadas. Programación de Sistemas

Listas enlazadas. Programación de Sistemas Listas enlazadas Programación de Sistemas 1 Estructuras de datos Abstracción que representa un conjunto de datos en un programa con el objeto de facilitar su manipulación Diferentes estructuras de datos

Más detalles

Departamento de Informática Universidad de Valladolid Campus de Segovia TEMA 3: ESTRUCTURAS DINÁMICAS LINEALES. LISTAS ENLAZADAS, PILAS Y COLAS

Departamento de Informática Universidad de Valladolid Campus de Segovia TEMA 3: ESTRUCTURAS DINÁMICAS LINEALES. LISTAS ENLAZADAS, PILAS Y COLAS Departamento de Informática Universidad de Valladolid Campus de Segovia TEMA 3: ESTRUCTURAS DINÁMICAS LINEALES. LISTAS ENLAZADAS, PILAS Y COLAS ÍNDICE Listas enlazadas Pilas Colas DEFINICIÓN DEL TIPO LISTA

Más detalles

Uno de los conceptos más útiles en ciencias de la computación es la pila.

Uno de los conceptos más útiles en ciencias de la computación es la pila. 23. PILA. (Stack). Tipos de Datos Abstractos. 23.1 Conceptos. Uno de los conceptos más útiles en ciencias de la computación es la pila. Una pila es una colección ordenada de elementos de igual tipo, en

Más detalles

Programación de sistemas

Programación de sistemas Programación de sistemas Listas enlazadas Julio Villena Román MATERIALES BASADOS EN EL TRABAJO DE DIFERENTES AUTORES: Carlos Delgado Kloos, Jesús Arias Fisteus, Carlos Alario Hoyos

Más detalles

Estructura de datos Colas

Estructura de datos Colas Estructura de Datos Estructura de datos Colas Temario Unidad II 2.1 Definición y operaciones 2.2 Implementación estática 2.3 Implementación dinámica 2.4 Colas de prioridad 2.5 Casos de estudio 1 Definición

Más detalles

Tema 4- Representación Enlazada

Tema 4- Representación Enlazada Tema 4- Representación Enlazada Tema 4: Representación Enlazada Índice general: 1. Representación Enlazada: Variables referencia Java como enlaces. 2. Listas Enlazadas Genéricas. Operaciones y costes.

Más detalles

Estructuras de Datos Lineales y Arborescentes

Estructuras de Datos Lineales y Arborescentes 1/46 Estructuras de Datos Lineales y Arborescentes Josefina Sierra Santibáñez 14 de abril de 2018 2/46 Estructuras de Datos Lineales y Arborescentes En este tema se utilizan estructuras de datos genéricas

Más detalles

SEGUNDO EXAMEN PARCIAL ESTRUCTURA DE DATOS Y ALGORITMOS 27 MARZO 2014 (Grupo 81M Leganés Mañana)

SEGUNDO EXAMEN PARCIAL ESTRUCTURA DE DATOS Y ALGORITMOS 27 MARZO 2014 (Grupo 81M Leganés Mañana) SEGUNDO EXAMEN PARCIAL ESTRUCTURA DE DATOS Y ALGORITMOS 27 MARZO 2014 (Grupo 81M Leganés Mañana) Apellidos y Nombre: Grupo Algunas reglas: Antes de comenzar el examen, escribe tu nombre y grupo. Lee atentamente

Más detalles

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009 Árboles Ejemplos de estructuras arborescentes: con forma de árbol Regla de Alcance: los objetos visibles en un procedimiento son aquellos declarados en él mismo o en cualquier ancestro de él (cualquier

Más detalles

STL: Standard Template Library

STL: Standard Template Library SEMINARIO C++ STL: Standard Template Library v. 20100915 Programación orientada a objetos Curso 10-11 ÍNDICE 1. Objetivo 2. El contenedor vector 3. Iteradores 4. Operaciones 5. Operadores 2 OBJETIVO La

Más detalles

Temario. Tema 5. Estructuras de Datos no Lineales. 5.1 Árboles Binarios 5.2 Árboles n-arios

Temario. Tema 5. Estructuras de Datos no Lineales. 5.1 Árboles Binarios 5.2 Árboles n-arios Temario 5.1 Árboles Binarios 5.2 Árboles n-arios Especificación Utilización Representación Enlazada 5.3 Árboles Binarios de Búsqueda 5.4 Árboles Parcialmente Ordenados 1 Árbol n-ario: O bien es el conjunto

Más detalles

Estructuras de datos en memoria principal

Estructuras de datos en memoria principal Estructuras de datos Estructuras de datos en memoria principal Franco Guidi Polanco Escuela de Ingeniería Industrial Pontificia Universidad Católica de Valparaíso, Chile fguidi@ucv.cl Actualización: 11

Más detalles

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

Tema 02: TAD Pila. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom Tema 02: TAD Pila M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1 Contenido Descripción

Más detalles

Estructuras de Datos Lineales y Arborescentes

Estructuras de Datos Lineales y Arborescentes 1/46 Estructuras de Datos Lineales y Arborescentes Josefina Sierra Santibáñez 14 de noviembre de 2017 2/46 Estructuras de Datos Lineales y Arborescentes En este tema se utilizan estructuras de datos genéricas

Más detalles

Estructuras de Datos II (I.T. Informática de Gestión y Sistemas) Boletín nº 1 Tipos Abstractos de Datos: especificaciones algebraicas

Estructuras de Datos II (I.T. Informática de Gestión y Sistemas) Boletín nº 1 Tipos Abstractos de Datos: especificaciones algebraicas Estructuras de Datos II (I.T. Informática de Gestión y Sistemas) Boletín nº 1 Tipos Abstractos de Datos: especificaciones algebraicas Ejercicios resueltos ER1. TAD Figura de trazos Se desea representar

Más detalles

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 -

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 - Trabajo práctico Nº 7 (Resolución de problemas Estructura: pila y cola). Realiza el programa de cada situación problemática. 1- Cargar en una pila n letras del abecedario.(n debe ser menor a 30) 2- En

Más detalles

Estructuras de datos: Árboles binarios de

Estructuras de datos: Árboles binarios de Estructuras de datos: Árboles binarios de búsqueda, Facultad de Informática Universidad de A Coruña Table of Contents Árboles binarios de búsqueda 1 Árboles binarios de búsqueda 2 Table of Contents Árboles

Más detalles

Estructura de Datos y de la Información

Estructura de Datos y de la Información Universidad Rey Juan Carlos Curso 2009/10 Ingeniería Técnica en Informática de Gestión Estructura de Datos y de la Información Examen Final Junio 2010 Fecha: 24-6-2010 Soluciones Ejercicio 1. (Puntuación

Más detalles

Ejercicio 2 Considere la representación para Lista de Naturales y Árbol Binario de Naturales de la Figura 1.

Ejercicio 2 Considere la representación para Lista de Naturales y Árbol Binario de Naturales de la Figura 1. Ejercicios Resueltos del Práctico 4 Ejercicio 2 Considere la representación para Lista de Naturales y Árbol Binario de Naturales de la Figura 1. 1 2 struct NodoLista { 3 int elem ; 4 NodoLista * sig ;

Más detalles

ESTRUCTURAS DE DATOS Y ALGORITMOS

ESTRUCTURAS DE DATOS Y ALGORITMOS ESTRUCTURAS DE DATOS Y ALGORITMOS COLECCIÓN TEXTOS DOCENTES FICHA CATALOGRÁFICA CAMPOS LACLAUSTRA, Javier Estructuras de datos y algoritmos / Javier Campos Laclaustra. Zaragoza : Prensas Universitarias

Más detalles

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

Estructura de Datos. Centro Universitario UAEM Valle de México. Unidad II. Estructuras de Datos Lineales - Listas Estructura de Datos Centro Universitario UAEM Valle de México Unidad II. Estructuras de Datos Lineales - Listas Licenciatura en Ingeniería en Computación Ph. D. Victor Manuel Landassuri Moreno vmlandassurim@uaemex.mx

Más detalles

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

Algoritmos y Estructuras de Datos Ingeniería en Informática 2.1.Sean A= {1, 2, 3, 7, 8} y B= {3, 4, 5, 7, 9}, mostrar la ejecución y los resultados de las siguientes operaciones, suponiendo una representación con arrays de booleanos y con listas de elementos (ordenadas

Más detalles

Estructuras lineales de datos

Estructuras lineales de datos Estructuras lineales de datos Esta sección está orientada a comprender y manejar las estructuras lineales de datos, teniendo en cuenta la representación lógica y física de las mismas y el lenguaje de programación

Más detalles

El TAD Grafo. El TAD Grafo

El TAD Grafo. El TAD Grafo ! Esta representación resulta útil cuando el número de vértices se conoce previamente y permanecerá fijo durante la resolución del problema, pero resulta ineficiente si necesitamos añadir o eliminar vértices

Más detalles

STL: Standard Template Library

STL: Standard Template Library STL: Standard Template Library Estructuras de Datos Andrea Rueda Pontificia Universidad Javeriana Departamento de Ingeniería de Sistemas Consideraciones de diseño Programas = Algoritmos + Datos (ecuación

Más detalles

Estructuras de datos en memoria principal

Estructuras de datos en memoria principal Estructuras de datos en memoria principal Franco Guidi Polanco Escuela de Ingeniería Industrial Pontificia Universidad Católica de Valparaíso, Chile fguidi@ucv.cl Estructuras de datos v Estructuras básicas

Más detalles

Tema 1. Programación modular. Programación Avanzada Ingeniería Técnica en Informática de Gestión Jorge Badenas

Tema 1. Programación modular. Programación Avanzada Ingeniería Técnica en Informática de Gestión Jorge Badenas Tema 1. Programación modular Programación Avanzada Ingeniería Técnica en Informática de Gestión Jorge Badenas 1.1. Objetivos Repasar brevemente mediante ejemplos los elementos principales del lenguaje

Más detalles

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

Árboles balanceados (AVL) Tablas de dispersión (Hash) Colas de prioridad (Heap) Práctico 4 Árboles balanceados (AVL) Tablas de dispersión (Hash) Colas de prioridad (Heap) Clasificación de ejercicios: (I) Imprescindibles (R) Recomendados (C) Complementarios Árboles balanceados (AVL)

Más detalles

Estructuras de Datos y Algoritmos

Estructuras de Datos y Algoritmos Estructuras de Datos y Algoritmos Tema 5.3. Árboles. Colas con prioridad y Montículos Prof. Dr. P. Javier Herrera Contenido Colas con prioridad Operaciones básicas Especificación de colas con prioridad

Más detalles

Estructura de datos Tema 3: El TAD Lista lineal. Universidad de Valladolid. Departamento de informática. Campus de Segovia

Estructura de datos Tema 3: El TAD Lista lineal. Universidad de Valladolid. Departamento de informática. Campus de Segovia Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 3: El TAD Lista lineal Prof. Montserrat Serrano Montero ÍNDICE El TAD lista lineal Implementación con estructuras

Más detalles

Estructuras de Datos Clase 14 Árboles binarios de búsqueda

Estructuras de Datos Clase 14 Árboles binarios de búsqueda Estructuras de Datos Clase 14 Árboles binarios de búsqueda Dr. Sergio A. Gómez http://cs.uns.edu.ar/~sag Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Bahía Blanca,

Más detalles