La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Universidad Autónoma del Estado de México

Presentaciones similares


Presentación del tema: "Universidad Autónoma del Estado de México"— Transcripción de la presentación:

1 Universidad Autónoma del Estado de México
Centro Universitario UAEM Valle de Teotihuacán FICHA DE DATOS Créditos Institucionales: 8 créditos. Titulo de la guía para la Unidad de Aprendizaje: “Pilas y Colas”. Nombre del programa educativo: Ingeniería en Computación. Unidad de Aprendizaje: Estructura de datos Espacio Académico : Centro Universitario UAEM Valle de Teotihuacán. Nombre del Responsable: M. en S.C. Jaqueline Sánchez Espinoza 13 de octubre 2017

2 Estructuras Lineales Estáticas y Dinámicas
Pilas Colas

3 Estructuras de Datos Almacenamiento Contiguo Lineales
No lineales Almacenamiento Contiguo Almacenamiento No Contiguo

4 Operaciones Básicas en Estructuras Lineales
Recorrido: Procesa c/elemento de la estructura. Búsqueda: Recupera la posición de un elemento específico. Inserción: Adiciona un nuevo elemento a la estructura. Borrado: Elimina un elemento de la estructura. Ordenación: Ordena los elementos de la estructura de acuerdo a los valores que contiene. Mezcla: Combina 2 estructuras en una sola.

5 PILAS Definición: Estructura de datos lineal donde los elementos pueden ser añadidos o removidos solo por un extremo. Trabajan con filosofía LIFO (Last In- First Out ). Ejemplos: Pila de platos Pila de discos Pila de llamadas a funciones Pila de recursion Pila de resultados parciales de formulas aritméticas, etc.

6 OPERACIONES BASICAS CON PILAS
-PUSH (insertar).- Agrega un elementos a la pila en el extremo llamado tope. -POP (remover).- Remueve el elemento de la pila que se encuentra en el extremo llamado tope. -VACIA.- Indica si la pila contiene o no contiene elementos. -LLENA.- Indica si es posible o no agregar nuevos elementos a la pila.

7 REPRESENTACIÓN DE PILAS:
Usando arreglos: Define un arreglo de una dimensión (vector) donde se almacenan los elementos. TOPE: Apunta hacia el elemento que se encuentra en el extremo de la pila. (inicialmente es -1).

8 Ejemplo Insertar A: Insertar B: Insertar C: Eliminar elemento Inicio:
Tope A B Tope A B Tope C Tope -1 Tope A

9 Interface para una pila de datos enteros
interface IPila { public boolean llena(); public boolean vacia(); public void push (int elem); public int pop(); }

10 Implementación usando un arreglo
class Pila implements IPila { int tope = -1; private int [] pila = new int [10]; final int MAX = 9; public boolean llena(){ return ( tope == MAX ); } public void push (int elem){ if (this.llena()) then // ERROR else{ tope ++; pila [ tope ] = elem; public boolean vacia(){ return (tope == -1); } public int pop(){ if (this.vacia()) then // ERROR else{ int x = pila[tope]; tope --; return x;

11 Implementación usando un Vector
public class Stack { private Vector items; public Stack() { items = new Vector(10); } public Object push(Object item){ items.addElement(item); return item; public synchronized Object pop(){ int len = items.size(); Object obj = null; if (len == 0) throw new EmptryStackException(); obj = items.elementAt(len-1); items.removeElementAt(len –1); return obj; } public boolean isEmpty() { if (items.size == 0) return true; else return false;

12 EXPRESIONES ARITMETICAS:
Aplicaciones de Pilas EXPRESIONES ARITMETICAS: Una expresión aritmética contiene constantes, variables y operaciones con distintos niveles de precedencia. OPERACIONES : ^ potencia */ multiplicación, división +,- suma, resta

13 NOTACIONES: NOTACION INFIJA: Los operadores aparecen en medio de los operandos. A + B, A – 1, E/F, A * C , A ^ B , A + B + C, A+B-C NOTACION PREFIJA: El operador aparece antes de los operandos. + AB, - A1, /EF, *AC, ^AB, +AB+C, +AB-C NOTACION POSTFIJA: El operador aparece al final de los operandos. AB+, A1-, EF/, AC*, AB^, AB+C+, AB+C-

14 PASOS PARA EVALUAR UNA EXPRESION:
1.-CONVERTIR A POSTFIJO: convertir la expresión en notación infijo a notación postfijo 2.-EVALUAR LA EXPRESION POSTFIJA: usar una pila para mantener los resultados intermedios cuando se evalúa la expresión en notación posfijo.

15 REGLAS PARA CONVERTIR EXPRESION INFIJA A POSTFIJA
Se crea un string resultado donde se almacena la expresión en postfijo. 1.- Los operandos se agregan directamente al resultado 2.- Un paréntesis izquierdo se mete a la pila y tiene prioridad o precedencia cero (0). 3.- Un paréntesis derecho saca los elementos de la pila y los agrega al resultado hasta sacar un paréntesis izquierdo. 4.- Los operadores se insertan en la pila si: a) La pila esta vacía. b) El operador en el tope de la pila tiene menor precedencia. c) Si el operador en el tope tiene mayor precedencia se saca y agrega al resultado (repetir esta operación hasta encontrar un operador con menor precedencia o la pila este vacía). 5.- Cuando se termina de procesar la cadena que contiene la expresión infijo se vacía la pila pasando los elementos al resultado.

16 Ejemplos Convertir las siguientes expresiones infijas a posfijo
A +B*C-D A * ((B-C) / 2)) ((X-Z)*(Y+W))/X+Y

17 REGLAS PARA EVALUAR UNA EXPRESION POSTFIJA
Recorrer la expresion de izquierda a derecha Si es un operando almacenar el valor en la pila de valores Si es un operador: Obtener dos operandos de la pila de valores Aplicar el operador Almacenar el resultado en la pila de valores Al finalizar el recorrido, el resultado estará en la pila de valores

18 Aplicaciones de Pilas Funciones Recursivas
Las pilas pueden ser usadas para implementar la recursión en programas. Una función o procedimiento recursivo es aquel que se llama a si mismo. Ejemplos: Factorial Números de Fibonacci Torres de Hanoi Algoritmos de Ordenamiento de datos Etc.

19 Aplicaciones de Pilas Recursion // Funcion factorial
public static int factorial(int n) { if (n<=1) return 1; else return n*factorial(n-1); } // Funcion fibonacci public static int fib(int n) { if (n==1) return 0; else if (n==2) return 1; else return fib(n-1)+fib(n-2); }

20 Control de secuencia de programas.
Aplicaciones de Pilas Control de secuencia de programas. Las pilas son requeridas para implementar el control de flujo de ejecución de un programa con subprogramas (funciones, procedimientos o métodos). Subprogramas recursivos o no recursivos Existen llamadas a ejecución de subprogramas. Un subprograma se ejecuta completamente antes de retornar al punto donde fue llamado.

21 Cual es la salida de este programa?
Aplicaciones de Pilas Control de secuencia de programas. // Programa Principal class Principal{ public static void proceso1(){ System.out.println(“proceso1”); proceso2(); } public static void proceso2(){ System.out.println(“proceso2”); public static void main(String[] args){ proceso1(); Cual es la salida de este programa?

22 Clase Stack en Java La clase Stack representa una pila de objetos donde el último en entrar es el primero en salir (LIFO). Extiende la clase Vector con 5 operaciones básicas. java.util Class Stack<E> java.lang.Object java.util.AbstractCollection<E> java.util.AbstractList<E> java.util.Vector<E> java.util.Stack<E> All Implemented Interfaces: Serializable, Cloneable, Iterable<E>, Collection<E>, List<E>, RandomAccess

23 Method Summary  boolean empty()           Tests if this stack is empty.  E peek()           Looks at the object at the top of this stack without removing it from the stack. pop()           Removes the object at the top of this stack and returns that object as the value of this function. push(E item)           Pushes an item onto the top of this stack.  int search(Object o)           Returns the 1-based position where an object is on this stack.

24 COLAS Definición. Es una lista lineal de elementos en la que las operaciones de insertar y eliminar se realizan en diferentes extremos de la cola. Trabajan con filosofía FIFO ( First In - First out), el primer elemento en entrar es el primer elemento en salir. Ejemplos: Cola de automóviles esperando servicio en una gasolinera Cola de clientes en una ventanilla del banco para pagar un servicio Cola de programas en espera de ser ejecutados por una computadora.

25 TIPOS DE COLAS: Cola simple: Estructura lineal donde los elementos salen en el mismo orden en que llegan. Cola circular: Representación lógica de una cola simple en un arreglo. Cola de Prioridades: Estructura lineal en la cual los elementos se insertan en cualquier posición de la cola y se remueven solamente por el frente. Cola Doble (Bicola): Estructura lineal en la que los elementos se pueden añadir o quitar por cualquier extremo de la cola (cola bidireccional).

26 Operaciones básicas en Colas Simples
Insertar.- Almacena al final de la cola el elemento que se recibe como paramétro. Eliminar.- Saca de la cola el elemento que se encuentra al frente. Vacía.- Regresa un valor booleano indicando si la cola tiene o no elementos (true – si la cola esta vacia, false – si la cola tiene al menos un elemento). Llena.- Regresa un valor booleano indicando si la cola tiene espacio disponible para insertar nuevos elementos ( true – si esta llena y false si existen espacios disponibles).

27 Estado de la cola: Inicio: Cola Vacía 1.- Insertar A 2.- Insertar B
Operaciones: Estado de la cola: Inicio: Cola Vacía A 1.- Insertar A B A 2.- Insertar B A B C 3.- Insertar C B C 4.- Remover Elemento 5.- Insertar D B C D 6.- Remover Elemento C D

28 Implementación de Colas
Arreglo con frente fijo. con frente movible. circular. Listas ligadas

29 Representación usando arreglos
Las colas pueden ser representadas en arreglos de una dimensión (vector) manteniendo dos variables que indiquen el FRENTE y FINAL de los elementos de la cola. A F S D Z Frente Final

30 Cuando la cola esta vacía las variables frente y final son nulos y no es posible remover elementos.
Cuando la cola esta llena ( frente = 0 y final = n-1) no es posible insertar elementos nuevos a la cola. Cuando se remueven elementos el frente puede incrementarse para apuntar al siguiente elemento de la cola (implementacion con frente movil) o los elementos en la cola pueden desplazarse una posicion adelante (implementación con frente fijo) Recuperación de espacio: Cuando no hay espacios libres al final del arreglo los elementos pueden ser desplazados para desocupar posiciones en un extremo del arreglo o se puede manejar una estructura circular.

31 Ejemplo: Suponer que usamos un arreglo de 5 posiciones
Ejemplo: Suponer que usamos un arreglo de 5 posiciones. Usando la representación de frente fijo y frente movible. A B C Frente Final Al remover un elemento: Frente Final Frente Final B C B C Frente fijo Frente movible

32 Insertar elemento D: Frente Final B C Frente Final B C Frente Final
B C D Frente Final B C D

33 Insertar elemento E: Frente Final B C D E Frente Final B C D E Insertar elemento F: Frente Final Frente Final B C D E F B C D E F Insertar elemento G: Error: Cola llena!!!!

34 B C D Frente Final Cola Circular Cola inicial C D Frente Final Es una representación lógica de la cola en un arreglo. El frente y final son movibles. Cuando el frente o final llegan al extremo se regresan a la primera posición del arreglo. Remover C D E Frente Final Insertar E F C D E Frente Final Insertar F

35 Representación de colas:
Usando memoria estática: arreglos con tamaño fijo y frente fijo o movible o represntación circular. Usando memoria dinámica: Listas ligadas. B C D E F Frente Final B C D Frente Final E F

36 Implementación de una cola:
Implementacion usando Object Implementacion usando parametros de tipo class Cola implements ICola { private Object[] cola; private int frente = -1; private int fin = -1; private int size; public Cola(int s){ size = s-1; cola = new Object[s]; } public boolean vacia(){ return (frente == -1); public boolean llena(){ return ( fin == size ); public void insertar( Object elem) { if ( frente == -1 ) frente ++; else if ( fin == size) ERROR Cola Llena! fin ++; cola[fin]=elem; public Object eliminar(){ class Cola<T> implements ICola<T> { private T[] cola; private int frente = -1; private int fin = -1; private int size; public Cola(int s){ size = s-1; cola = new T[s]; } public boolean vacia(){ return (frente == -1); public boolean llena(){ return ( fin == size ); public void insertar( T elem) { ... public T eliminar(){ …

37 Bibliografía Joyanes Aguilar Luis. Fundamentos de Programación. Algoritmos y Estructuras. Editorial Mc Graw Hill. G. Brassard y P. Bratley. Fundamentos de Algoritmia. A.V. AHO, J.R. Hopcroft, J.D. Ullman, Técnicas de diseño de algoritmos, Addison Wesley,1989, 2da. ed., 470 pp. Estructuras de datos, algoritmos, y programación orientación y objetos, Heileman Gregory l, MC. Graw Hill 1997, 1ra ed. 305 pág.. Miranda Chávez Edna, Fuenlabrada Velázquez Sergio, Anguiano Vega Celso Francisco, Noción Algorítmicas, 1994, 1ª. ed., 74 pp.


Descargar ppt "Universidad Autónoma del Estado de México"

Presentaciones similares


Anuncios Google