darwin rodriguez 12-0861_pilasy_colas

13
Estructura de Datos Darwin Rodríguez Leclerc 12-0861

Upload: derl05

Post on 11-Jul-2015

42 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Darwin rodriguez 12-0861_pilasy_colas

Estructura de Datos

Darwin Rodríguez Leclerc12-0861

Page 2: Darwin rodriguez 12-0861_pilasy_colas

Las pilas y colas son estructuras de datos que se Las pilas y colas son estructuras de datos que se utilizan generalmente para simplificar ciertas utilizan generalmente para simplificar ciertas operaciones de programación. operaciones de programación.   

Estas estructuras pueden implementarse Estas estructuras pueden implementarse mediante arrays o mediante listas enlazadas.mediante arrays o mediante listas enlazadas.

Page 3: Darwin rodriguez 12-0861_pilasy_colas

Pilas

Las pilas son estructuras de datos que tienen dos operaciones básicas: push (para insertar un elemento) y pop (para extraer un elemento). Su característica fundamental es que al extraer se obtiene siempre el último elemento que acaba de insertarse. Por esta razón también se conocen como estructuras de datos LIFO (del inglés Last In First Out).

Page 4: Darwin rodriguez 12-0861_pilasy_colas

Cont…

Una posible implementación mediante listas enlazadas sería insertando y extrayendo siempre por el principio de la lista. Gracias a las pilas es posible el uso de la recursividad (lo veremos en detalle en el tema siguiente). La variable que llama al mismo procedimiento en el q está, habrá que guardarla así como el resto de variables de la nueva llamada, para a la vuelta de la recursividad ir sacándolas, esto es posible a la implementación de pilas.

Page 5: Darwin rodriguez 12-0861_pilasy_colas

Las pilas se utilizan en muchas aplicaciones que utilizamos con frecuencia. Por ejemplo, la gestión de ventanas en Windows (cuando cerramos una ventana siempre recuperamos la que teníamos detrás). Otro ejemplo es la evaluación general de cualquier expresión matemática para evitar tener que calcular el número de variables temporales que hacen falta. Por ejemplo:

Page 6: Darwin rodriguez 12-0861_pilasy_colas

Operaciones con Pilas

Básicas

Pop(): Regresa el último elemento insertado en la pila

Push(): Inserta un elemento en el tope de la pila.

Auxiliares

Llena():Regresa verdadero si la pila está llena.

Vacia(): Regresa verdadero si la pila está vacía.

Size(): Regresa el tope de la pila.

Vaciar(): Elimina todos los elementos de la pila

Page 7: Darwin rodriguez 12-0861_pilasy_colas

Colas

Las colas también son llamadas FIFO (First In First Out), que quiere decir “el primero que entra es el primero que sale”.

Page 8: Darwin rodriguez 12-0861_pilasy_colas

Colas simples:

Se inserta por un sitio y se saca por otro, en el caso de la cola simple se inserta por el final y se saca por el principio. Para gestionar este tipo de cola hay que recordar siempre cual es el siguiente elemento que se va a leer y cual es el último elemento que se ha introducido.

Page 9: Darwin rodriguez 12-0861_pilasy_colas

Colas circulares:

En las colas circulares se considera que después del último elemento se accede de nuevo al primero. De esta forma se reutilizan las posiciones extraídas, el final de la cola es a su vez el principio, creándose un circuito cerrado.

Lo que se ha hecho es insertar (5), sacar (1), e insertar (8). Se sabrá que una tabla está llena cuando “rear” y “front” estén en una posición de diferencia. El teclado de ordenador se comporta exactamente como una cola circular.

Page 10: Darwin rodriguez 12-0861_pilasy_colas

Operaciones con Cola

Básicas

Insertar: Agrega un elemento al final de la cola.

Remover: Remover el primer elemento de la cola.

Auxil iares

Llena():Regresa verdadero si la pila está llena.

Vacia(): Regresa verdadero si la pila está vacía.

Page 11: Darwin rodriguez 12-0861_pilasy_colas

ListasUna lista es un contenedor secuencial en el que se pueden

insertar y borrar elementos independientemente del tamaño del contenedor. La lista enlazada básica consta de una colección de nodos conectados entre sí, dichos nodos están situados en la memoria dinámica en direcciones no consecutivas. Cada nodo se compone de una sección de datos y una referencia al siguiente nodo de la lista. Los nodos típicos la estructura Lista y del ADT Lista son como los de la figura:

Page 12: Darwin rodriguez 12-0861_pilasy_colas

Para insertar un elemento cualquiera debemos ir recorriendo la lista, lo que pudiera hacer creer que las listas son menos prácticas que los vectores, pero estas tienen sus ventajas: una inserción en medio de la lista no requiere mover todos los elementos que se encuentran después del punto de inserción mientras que en un vector es necesario recorrer todos los elementos para abrir espacio al nuevo elemento.

Cabe hacer notar que si se permite el acceso sólo al primer elemento, entonces la lista se comporta como una pila mientras que si las inserciones se realizan sólo por el último y los accesos sólo por el inicio, entonces la lista se ha implementado para comportarse con el esquema FIFO.

Page 13: Darwin rodriguez 12-0861_pilasy_colas

Gracias.!! !