Colas y Listas Enlazadas

Slides:



Advertisements
Presentaciones similares
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.
Advertisements

PILA.
ESTRUCTURA DE DATOS Unidad 03 PILAS.
ESTRUCTURA DE DATOS Unidad 03 COLAS.
TDA LISTA ESTRUCTURAS DE DATOS.
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.
Programación II Listas
Estructuras de datos y algoritmos
Estructura de Datos En C++
Algoritmos de Remplazamiento de Paginas
Tratamiento de listas en Java
Implementación de listas
PROGRAMACION DE Pilas o Stacks y Colas
Algoritmos Aleatorizados
Marzo 2007 Lenguajes Visuales Clase III.
Estructuras de Datos Especificación formal de Listas.
Programación II Colas Igor Santos Grueiro.
Tecnología de la Programación Javier Nieves Acedo Standar Template Library (STL)
Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
CI TEORIA semana 8 Subprogramas o funciones Definición de funciones.
Estructuras dinámicas de datos, TAD Lista, parte 2
COLAS, IMPLEMENTACIÓN A PARTIR DE LISTAS Y PARA PILAS
Pila1UVM Colas. Pila2UVM Pila3UVM 3.1 Objetivos El estudiante manejará el tad Cola, sobre memoria estática.
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.
Igor Santos Grueiro. De este tipo de pilas NO vamos a hablar.
Tema 6: Clases Antonio J. Sierra.
Listas circulares.
C++ LISTAS C++ 11/04/2017 Ing. Edgar Ruiz Lizama.
POR: Meza Guevara Sandra Fabiola Contreras Meléndez Damariz Figueroa Cisneros Ricardo UNIVERSIDAD TECNOLÓGICA DE DURANGO TECNOLÓGIAS DE LA INFORMACIÓN.
PILAS, COLAS, RECURSIVIDAD.
ESTRUCTURAS DE DATOS I Conocer, comprender y analizar algunos de los principales tipos de estructuras de datos.
Listas enlazadas.
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.
ELO3201 Contenedores Biblioteca Estándar de Templates Agustín J. González ELO320 Contenido Contenedores: Vector, List, Deque, Stack, Queue, Priority Queue,
Material de apoyo Unidad 4 Estructura de datos
Aplicación de estructuras de datos
Pilas y Colas Estructuras de Datos.
LISTA DOBLEMENTE ENLAZADA
Computación I Primer Semestre 2006 Capítulo IV Ciclos y Colecciones (con un sabor a algoritmos)
República Bolivariana de Venezuela. Ministerio del PP para la Defensa. Universidad Nacional Experimental de la Fuerza Armada. Cátedra: Instrucción Militar.
Universitarios: Ricardo Gonzales Jimenez Wilfredo Coca Reinaldo Yohan Docente: Lic. Israel Torrez Valverde Tema: Listas doblemente Enlazadas.
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.
Unidad 4: LISTAS.
Punteros Recomendado: 1. Nivelación Funciones
Son estructuras de datos que almacenan y recuperan sus elementos atendiendo a un estricto orden (LIFO Last – in, first –out Ultimo en entrar – primero.
 Ignacio Soto Valdez R  Paola Karina Suarez Salazar R  Mario Alberto Castillo Aviles R
Estructuras de datos Fundamentos de análisis y diseño de algoritmos.
INSTITUTO TECNOLOGICO DE APIZACO
Ayudantia 3: Pilas- Colas
 Introducción  Conceptos El equipo demostrara y mostrara los conceptos, definición y funcionamiento de una las “listas doblemente enlazadas y circulares”
Lic. En C.C. Ann Margareth Meza Rodríguez
Lic. En C.C. Ann Margareth Meza Rodríguez
Estructura de Datos..
Pilas y Colas Cursos Propedéuticos 2006 Programación y Estructuras de Datos Manuel Montes Claudia Feregrino
Estructura: COLA Profesor: Ing. Erick López Ch. M.R.I.
Estructura de Datos PILAS. es una lista ordinal o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO (del inglés Last In.
M.C. Meliza Contreras González
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.
Ficha de datos Créditos Institucionales: 8 créditos.
Listas Dinámicas.
1 ListaUna Lista se define como una serie de N elementos E 1, E 2,..., E N, ordenados de manera consecutiva, es decir, el elemento E k (que se denomina.
UNIVERSIDAD DIEGO PORTALES Facultad de Ingeniería Programación Avanzada TIPOS ABSTRACTOS DE DATOS TAD Tema: TIPOS ABSTRACTOS DE DATOS TAD Subtema: COLAS.
Lenguaje de Programación II Prof. Rafael Montenegro B. Carrera: T.S.U en Informática Periodo: 2014-I.
Ingeniero en Computación José Alfredo Cobián Campos
Transcripción de la presentación:

Colas y Listas Enlazadas Colas doblemenre enlazadas

Colas Una cola se diferencia de una pila en que las operaciones de inserción y extracción siguen el principio de primero en entrar - primero en salir (first-in-first-out, FIFO). Los elementos se pueden insertar en cualquier momento, pero solo el elemento que ha permanecido el mayor tiempo puede ser extraído. Los elementos se insertan (enqueued) al final (rear) y se extraen (dequeued) desde el frente (front).

El tipo de Dato Abstracto Cola La cola tiene dos métodos fundamentales: enqueue(o): Inserta objecto o al final de la cola dequeue(): Extrae el objeto del frente de la cola y lo devuelve; ocurre un error si la cola está vacía Los siguientes métodos de soporte deben ser definidos: size(): Devuelve el núemro de objetos en la cola isEmpty(): Devuelve un valor lógico que indica si la cola está vacía front(): Devuelve, sin eliminar, el objeto del frente de la cola; ocurre un error si la cola está vacía

Cola basada en Array Crea una cola usando un array de forma circular. Se especifica un tamaño máximo N, e.g. N = 1,000. La cola consiste de un array Q de N-elementos y dos variables enteras: -f, índice del elemento del frente -r, índice del elemento siguiente al final de la cola “configuración normal” Preguntas: Qué significa f=r? Cómo se calcula el número de elementos en la cola desde f y r?

Cola basada en Array (1) Pseudocódigo Algoritmo size(): return (N - f + r) mod N Algoritmo isEmpty(): return (f = r) Algoritmo front(): if isEmpty() then throw a QueueEmptyException return Q[f] Algoritmo dequeue(): if isEmpty() then throw QueueEmptyException temp  Q[f] Q[f]  null f  (f + 1) mod N return temp Algoritmo enqueue(o): if size = N - 1 then throw QueueFullException Q[r]  o

Implementación de una Cola con una Lista Enlazada Simple Lista Enlazada Simple: Nodos conectados en cadena por enlaces La cabeza de la lista es el frente de la cola, la cola de la lista es el final de la cola. Porqué no lo contrario?

Extración de la Cabeza

Insertando por la cola

Colas con finales dobles Una cola con doble-final, o deque, soporta inserción y extracción desde el frente y el final. El Tipo de Dato Abstracto Deque insertFirst(e): Inserta e al de-inicio de la deque. insertLast(e): Inserta e al de-final de la deque removeFirst(): Extrae y devuelve primer elemento removeLast(): Extrae y devuelve último elemento Métodos de soporte adicionales: first() last() size() isEmpty()

Implementando Pilas y Colas con Deques Pilas con Deques: Colas con Deques:

El Patrón Adaptor El uso de un deque para implementar una pila o cola es un ejemplo del patrón adaptor. Los patrones Adaptor patterns implementan una clase mediante el uso de métodos de otra clase. En general, las clases adaptor especializan clases generales Dos aplicaciones son: Especializar una clase general mediante la modificación de algunos métodos. Ej: implementación de una pila con un deque. Especializar los tipos de objetos usados por una clase general. Ej: Definición de la clase IntegerArrayStack que adapta ArrayStack para almacenar solo enteros.

Implementación de Deques con Listas Doblemente Enlazadas La eliminación al final de una lista enlazada simple no se puede realizar en tiempo constante. Para implementar una deque, se usa una lista doblemente enlazada, con nodos cabeceros y finales especiales Un nodo de una lista doblemente enlazada tiene un enlace next y prev. Soporta los siguientes métodos: setElement(Object e) setNext(Object newNext) setPrev(Object newPrev) getElement() getNext() getPrev() Mediante el uso de una lista doblemente enlazada, todos los métodos de un corren en tiempo O(1).

Implementación de Deques con Listas Doblemente Enlazadas (1) Cuando se implementan listas doblemente enlazadas, se añaden dos nodos especiales en los finales de las listas: los nodos header y trailer. El nodo header va antes del primer elemento de la lista. Tiene un enlace válido next y null como enlace prev. El nodo trailer va después del último elemento. Tiene una referencia prev válida pero una referencia nula en next. NOTA: los nodos header y trailer son centinelas o nodos “vacios” porque no guardan elementos.

Implementación de Deques con Listas Doblemente Enlazadas (2) Visualización del código para removeLast().