colas y pilas - angelfire

31
COLAS Y PILAS. Elaborado por : Lic. Sara Badillo Vargas

Upload: others

Post on 16-Oct-2021

21 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: COLAS Y PILAS - Angelfire

COLAS Y PILAS.

Elaborado por : Lic. Sara Badillo Vargas

Page 2: COLAS Y PILAS - Angelfire

Colas

Una cola es un tipo especial de lista abierta en la que sólo se pueden insertar nodos en uno de los extremos de la lista y sólo se pueden eliminar nodos en el otro.

Elaborado por : Lic. Sara Badillo Vargas

1 2 3

Frente Final

Page 3: COLAS Y PILAS - Angelfire

REPRESENTACIÓN EN MEMORIA

Podemos representar a las colas de dos formas :

Como arreglos

Como listas ordenadas

Este tipo de lista es conocido como lista FIFO (First In First Out), el primero en entrar es el primero en salir.

Elaborado por : Lic. Sara Badillo Vargas

Page 4: COLAS Y PILAS - Angelfire

Overflow (cola llena), cuando se realice una inserción.

Underflow(cola vacía), cuando se requiera de una extracción en la cola.

Las operaciones que podemos realizar en una cola son:

Inicialización

inserción

extracción

Las condiciones a considerar en el tratamiento de colas lineales son

las siguientes:

Elaborado por : Lic. Sara Badillo Vargas

Page 5: COLAS Y PILAS - Angelfire

ALGORITMO PARA EXTRAER

Si A&ltF entonces

mensaje (underflow) en caso contrario F <-- F+1 x <-- cola[F]

ALGORITMO DE INICIALIZACIÓN F < -- 1 A <-- 0

ALGORITMO PARA INSERTAR

Si A=máximo entonces mensaje (overflow)

en caso contrario A<-- A+1 cola[A]<-- valor

Elaborado por : Lic. Sara Badillo Vargas

Page 6: COLAS Y PILAS - Angelfire

COLA CIRCULAR

Para solucionar el problema de desperdicio de memoria se

implementaron las colas circulares.

En las cuales existe un apuntador desde el último elemento al primero

de la cola.

La representación gráfica de esta estructura es la siguiente:

Elaborado por : Lic. Sara Badillo Vargas

final

inicio

Cola circular

Page 7: COLAS Y PILAS - Angelfire

ALGORITMO DE INICIALIZACIÓN F < -- 0 A<-- 0

ALGORITMO PARA EXTRAER

Si F=0 entonces mensaje (underflow) en caso contrario x <-- cola[F] si

F=A entonces F <-- 0 A<-- 0 en caso contrario si F=máximo entonces F <-

-1 en caso contrario F <-- F+1

ALGORITMO PARA INSERTAR

Si (F+1=A) ó (F=1 y A=máximo) entonces

mensaje (overflow) en caso contrario inicio

si A=máximo entonces A<--1 cola[A]<--

valor en caso contrario A <--A+1 cola[A]<--

valor si F=0 entonces F <-- 1 fin

Elaborado por : Lic. Sara Badillo Vargas

Page 8: COLAS Y PILAS - Angelfire

Nodo auxiliar

Leer un elemento con mas de un elemento

1. Hacemos que nodo apunte al primer elemento de la cola, es decir al primero. Asignamos al 1ro la dirección del 2do nodo dela pila 1ro->siguiente. 2. Guardamos el contenido del nodo para devolverlo con retorno, recuerda que la operación dela lectura en colas implican también borrar. 3. Liberamos la memoria asignada al 1er nodo, al que queremos eliminar

Elaborado por : Lic. Sara Badillo Vargas

Page 9: COLAS Y PILAS - Angelfire

DOBLE COLA

Esta estructura es una cola bidimensional en que las inserciones y

eliminaciones se pueden realizar en cualquiera de los dos extremos de la

bicola. Gráficamente representamos una bicola de la siguiente manera:

Doble cola de entrada restringida. Doble cola de salida restringida.

Elimina insertar

Elimina insertar

Existen dos variantes de la doble cola:

La primer variante sólo acepta inserciones al final de la cola, y la segunda acepta eliminaciones sólo al frente de la cola.

Elaborado por : Lic. Sara Badillo Vargas

Page 10: COLAS Y PILAS - Angelfire

ALGORITMOS DE ENTRADA RESTRINGIDA

Algoritmo de Inicialización.

F < -- 1 A <-- 0

Algoritmo para Insertar.

Si A=máximo entonces mensaje (overflow) en caso contrario A <--A+1 cola[A]<-- valor

Algoritmo para Extraer.

Si F&gtA entonces mensaje (underflow) en caso contrario mensaje (frente/atrás) si frente entonces x <-- cola[F]

F <-- F+1 en caso contrario x <-- cola[A] A <-- A-1

ALGORITMOS DE SALIDA RESTRINGIDA

Algoritmo de Inicialización.

F <--1 A <-- 0

Algoritmo para Insertar.

Si F&gtA entonces mensaje (overflow) en caso contrario mensaje (Frente/Atrás) si Frente entonces cola[F] <--

valor en caso contrario A <-- A+1 cola[A] <--valor

Algoritmo para Extraer.

Si F=0 entonces mensaje (underflow) en caso contrario x <--cola[F] F <-- F+1

Elaborado por : Lic. Sara Badillo Vargas

Page 11: COLAS Y PILAS - Angelfire

COLA DE PRIORIDADES

Esta estructura es un conjunto de elementos donde a cada uno de ellos se les asigna una prioridad.

Un elemento de mayor prioridad es procesado al principio. Dos elementos con la misma prioridad son procesados de acuerdo al orden en

que fueron insertados en la cola.

la forma en que son procesados es la siguiente:

Elaborado por : Lic. Sara Badillo Vargas

Page 12: COLAS Y PILAS - Angelfire

Algoritmo para Extraer. Si cola[1]=0 entonces mensaje(overflow) en caso contrario procesar <--

cola[1] para i desde 2 hasta n haz cola[i-1] <--cola[1] n <-- n-1

ALGORITMO PARA INSERTAR. x <--1 final<--verdadero para i desde 1 hasta n haz Si cola[i]&gtprioridad entonces

x <--i final <--falso salir si final entonces x <--n+1 para i desde n+1 hasta x+1

cola[i] <--prioridad n <-- n+1

Elaborado por : Lic. Sara Badillo Vargas

Page 13: COLAS Y PILAS - Angelfire

OPERACIONES EN COLAS

Las inserciones en la cola se llevarán a cabo por atrás de la cola, mientras que las eliminaciones (extracción) se realizarán por el frente de la cola (hay que recordar que el primero en entrar es el primero en salir).

Las operaciones que nosotros podemos realizar sobre una

cola son las siguientes:

Inserción. Extracción.

Elaborado por : Lic. Sara Badillo Vargas

Page 14: COLAS Y PILAS - Angelfire

Arreglos. Listas enlazadas.

PILAS

Una pila (stack en inglés) es una estructura de datos de tipo LIFO (del inglés Last In First Out, último en entrar, primero en salir) que permite almacenar y recuperar datos.

Pueden representarse mediante el uso de :

Elaborado por : Lic. Sara Badillo Vargas

Page 15: COLAS Y PILAS - Angelfire

Sólo se tiene acceso a la parte superior de la pila, es decir, al último objeto

apilado (denominado TOS, top of stack en inglés).

Operaciones principales:

Pila vacía Des apilar. -Sacar un elemento (pop) Apilar.- Meter un elemento ( (puch).

IMPLENTACION:

PILA: arreglo [ 1……N] de tipo_elemento Tope =0

La operación retirar permite la obtención de este elemento, que es retirado de la pila permitiendo el acceso al siguiente (apilado con anterioridad), que pasa a ser el nuevo TOS.

Elaborado por : Lic. Sara Badillo Vargas

Page 16: COLAS Y PILAS - Angelfire

Inserción (Push)

si sp=máximo entonces mensaje (overflow) en

caso contrario sp<-- sp+1 pila[sp]<-- valor

Eliminación (Pop)

si sp=0 entonces mensaje (underflow) en caso

contrario x<--pila[sp] sp<--sp-1

LOS ALGORITMOS PARA REALIZAR CADA UNA DE ESTAS OPERACIONES:

Elaborado por : Lic. Sara Badillo Vargas

Page 17: COLAS Y PILAS - Angelfire

Tenemos la limitante de espacio de memoria reservada

Una vez establecido un máximo de capacidad para la pila, ya no es posible insertar más elementos.

La representación gráfica de una pila es la siguiente:

En una pila

Elaborado por : Lic. Sara Badillo Vargas

En teoría el tamaño de la pila es limitado sin embargo en la practica existe la limitación física de la dela memoria.

Page 18: COLAS Y PILAS - Angelfire

Índice del vector donde se encuentra el ultimo elemento insertado.

Elaborado por : Lic. Sara Badillo Vargas

Page 19: COLAS Y PILAS - Angelfire

A medida que se introducen elementos en la pila se incrementa el tope.

Tope

Array PILA

El principal uso de estas estructuras es el tratamiento de expresiones matemáticas.

desapilar apilar

Elaborado por : Lic. Sara Badillo Vargas

Page 20: COLAS Y PILAS - Angelfire

ALGORITMO PARA CONVERTIR EXPRESIONES INFIJAS EN POSTFIJAS (RPN) Incrementar la pila Inicializar el conjunto de operaciones Mientras no ocurra error y no sea fin de la expresión infija haz

Si el carácter es: PARENTESIS IZQUIERDO. Colocarlo en la pila PARENTESIS DERECHO. Extraer y desplegar los valores hasta encontrar paréntesis izquierdo. Pero NO desplegarlo. UN OPERADOR.

Si la pila esta vacía o el carácter tiene más alta prioridad que el elemento del tope de la pila insertar el carácter en la pila. En caso contrario extraer y desplegar el elemento del tope de la pila y repetir la comparación con el nuevo tope.

OPERANDO. Desplegarlo. Al final de la expresión extraer y desplegar los elementos de la pila hasta que se vacíe.

ALGORITMO PARA EVALUAR UNA EXPRESION RPN Incrementar la pila Repetir

Tomar un caracter. Si el caracter es un operando colocarlo en la pila. Si el caracter es un operador entonces tomar los dos valores del tope de la pila, aplicar el operador y colocar el resultado en el nuevo tope de la pila. (Se produce un error en caso de no tener los 2 valores)

Hasta encontrar el fin de la expresión RPN. Elaborado por : Lic. Sara Badillo Vargas

Page 21: COLAS Y PILAS - Angelfire

Pila vacía() : Lógico {pos: regresa verdadero si la cadena esta vacía }

Si tope=0 entonces Retornar Verdadero Si no retornar falso

1 Tope: indica el índice correspondiente al tope de la pila

1 2

Topé = 0 => VERDADERO Tope <> 0 => FALSO

Regresa verdadero pues la pila esta vacía. Regresa Falso pues la pila no esta vacía.

Elaborado por : Lic. Sara Badillo Vargas

Page 22: COLAS Y PILAS - Angelfire

Elaborado por : Lic. Sara Badillo Vargas

Tope

Push(4) Push(6) Push(10) Pop(10)

4 4 4 4

6 6 6

10

Page 23: COLAS Y PILAS - Angelfire

Elaborado por : Lic. Sara Badillo Vargas

Page 24: COLAS Y PILAS - Angelfire

RECURSIÓN.

DIRECTA. Este tipo de recursión se da cuando un subprograma se llama directamente a sí mismo.

INDIRECTA Sucede cuando un subprograma llama a un segundo subprograma, y este a su vez llama al primero, es decir el subproceso A llama al B, y el B invoca al subproceso A.

La recursión se puede dar de dos formas:

Elaborado por : Lic. Sara Badillo Vargas

Page 25: COLAS Y PILAS - Angelfire

Un ejemplo de esto es cuando se toma una fotografía de una fotografía, o cuando en un programa de televisión un periodista transfiere el control a otro periodista que se encuentra en otra ciudad, y este a su vez le transfiere el control a otro.

Casos típicos de estructuras de datos definidas de manera recursiva son los árboles binarios y las listas enlazadas.

Elaborado por : Lic. Sara Badillo Vargas

Page 26: COLAS Y PILAS - Angelfire

Elaborado por : Lic. Sara Badillo Vargas

Page 27: COLAS Y PILAS - Angelfire

1.- Una cola es una estructura de tipo:

•FIFO. •LIFO

•LIFO/FIFO.

2.- Condiciones que deben considerarse en el

tratamiento de colas:

•Vacío, borrado y modificado.

•Overflow, underflow, vacío y modificado.

•Overflow, underflow y vacío.

3.- Característica principal de las colas circulares:

•Establecer tres apuntadores.

•Mantener un apuntador desde el último elemento al primer

elemento. •Mantener un apuntador al inicio.

Elaborado por : Lic. Sara Badillo Vargas

Evaluación de colas.

Page 28: COLAS Y PILAS - Angelfire

4.- En una doble cola la inserciones y extracciones se

realizan por:

•Solo por el frente.

•Cualquiera de los dos extremos. •Cualquiera de los dos extremos y por en medio

5.- Manera en que se procesan dos elementos con la misma prioridad

en una cola de prioridades:

•El de menor prioridad primero.

•El de mayor prioridad primero.

•De acuerdo al orden en que fueron insertados.

Elaborado por : Lic. Sara Badillo Vargas

Page 29: COLAS Y PILAS - Angelfire

1.- Una pila es una estructura de tipo:

•FIFO.

•FIFO/LIFO.

•LIFO.

2.- El principal uso de las pilas es:

•Tratamiento de expresiones Matemáticas. •Solución de problemas matemáticos

•Almacenar dato permanentemente

3.- Los tipos de recursión que existen son:

•Simple y Compuesta.

•Directa e Indirecta . •Directa, simple y compuesta.

Elaborado por : Lic. Sara Badillo Vargas

Evaluación de pilas.

Page 30: COLAS Y PILAS - Angelfire

4.- La representación en memoria de una pila se realiza por medio de:

•Listas enlazadas.

•Arreglos .

•Arreglos y listas enlazadas .

5.- Este tipo de recursión se da cuando un proceso se llama

directamente a sí mismo:

•Simple.

•Indirecta.

•Directa.

Elaborado por : Lic. Sara Badillo Vargas

Page 31: COLAS Y PILAS - Angelfire

Elaborado por : Lic. Sara Badillo Vargas