• No se han encontrado resultados

EJERCICIOS PROPUESTOS

In document UNIVERSIDAD SALESIANA DE BOLIVIA (página 47-51)

Ejercicios con pilas

EJERCICIOS PROPUESTOS

3. Traduzca las siguietes expresiones a notación postfija utilizando el algoritmo de evaluación.

3.1. X*(Z+W)/(T-V) 3.2. Z-W*Y+XˆK 3.3. W*(Z/(K-T))

4. Realizar un programa para hallar el mayor elemento de una pila P.

5. Realizar un procedimiento para intercambiar el último elemento de la pila por el primer elemento.

6. Escriba un programa que elimine los elementos repetidos de una pila. Los elementos repetidos ocupan posiciones sucesivas.

7. Escriba un subprograma que invierta los elementos de una pila. 8. Insertar n elementos después al fondo de una pila que ya tiene datos. 9. Eliminar los elementos divisores de X de la pila

10. Intercambiar cada elemento de la pila con su adyacente. 11. eliminar el primer elemento par de la pila

12. Hallar la frecuencia de repetición de cada elemento de la pila 13. Apilar los elementos de la pila B sobre la pila A.

14. Insertar el elemento X en una pila cuyos elementos estan ordenados en forma ascendente desde el fondo hasta el tope. La pila debe quedar ordenada

15. Escriba un programa que lea una expresión en notación infija, y la traduzca anotación postfija.

[Estructura de Datos]  Page 45

Lic. Katya Perez Martinez &Lic. Gladys Chuquimia

Capítulo III

Colas

3.1. Introducción

La estructura de datos "cola" también llamada "Queue", es un tipo de datos abstracto "TDA". Una cola TDA permite a una lista de cosas ser removidos en el orden en que fueron almacenados.

Una cola es una lista de elementos en la que éstos se introducen por un extremo y se eliminan por otro. Los elementos se eliminan en el mismo orden en el que se insertaron. Por lo tanto, el primer elemento que entra a la cola será el primero en salir. Debido a esta característica, las colas también reciben el nombre de estructuras FIFO (First In, First Out: Primero en entrar, primero en salir).

Las colas en computación son muy similares a las colas de la vida real. Ejemplos:

a. cola de clientes esperando pagar en una caja de supermercado b. cola de clientes esperando ser atendidos por algún cajero en un banco c. cola de procesos esperando ser ejecutados por una CPU

Al igual que la pila, la cola es una estructura de datos dinámica, pero puede ser representado en forma estática (arreglos).

El camino del Tigre

Un hombre caminaba por el bosque cuando vió una zorra lisiada. "¿Cómo hará para alimentarse?", pensó.

En ese momento, se acercó un tigre, con un animal entre los dientes. Sació su apetito, y le dejó a la zorra lo que había sobrado. "Si Dios ayuda a la zorra, también me va a ayudar", reflexionó.

Volvió a su casa, se encerró en ella, y se quedó esperando que los Cielos le proveyeran de alimento. Nada pasó. Cuando ya se estaba quedando demasiado débil para salir a trabajar, se le apareció un ángel.

- ¿Por qué decidiste imitar a la zorra lisiada? -preguntó el ángel.

[Estructura de Datos]  Page 46

Lic. Katya Perez Martinez &Lic. Gladys Chuquimia

3.2. Características

• Todos los elementos de la cola son del mismo tipo.

• Existe un orden de elementos ya que es una estructura lineal, pero los elementos no están ordenados por su valor sino por orden de introducción en la cola.

• Existen dos extremos en la estructura lineal cola, el frente y el final de la cola. • Sólo se puede acceder y eliminar al dato que está en el frente de la cola. • Sólo se puede añadir información al final de la cola.

3.3. Representación De Las Colas

Al igual que las pilas, las colas no existen como estructuras de datos estándares en los lenguajes de programación. Las colas pueden representarse mediante el uso de:

• Arreglos

• Listas Enlazadas.

Como en el caso de las pilas, utilizaremos arreglos. Debe definirse el tamaño máximo para la cola y dos variables auxiliares. Una de ellas para que guarde la posición del primer elemento de la cola (FRENTE) y otra para que guarde la posición del último elemento de la cola (FINAL). En el ejemplo siguiente se muestra una representación de una cola en la cual se ha insertado cuatro elementos: 11, 22, 33 y 44, en ese orden.

El elemento 11 está en el frente ya que fue el primero que entró en la cola. Mientras que el elemento 44, que fue el último en entrar, está en el FINAL de la cola.

Ejemplo: sea una cola Q de números enteros:

11 22 33 44

3.4. Estructura de Una cola Implementado mediante Arreglos

A continuación diseñamos la estructura de datos para una cola representada mediante un arreglo:

Q =

1 2 3 4 5 6

MAX=6

[Estructura de Datos]  Page 47

Lic. Katya Perez Martinez &Lic. Gladys Chuquimia

Donde los elementos son:

V[MAX]:es el vector que representa a la cola y es de tamaño MAX.

Frente: es la variable que indica la posición del elemento del frente de la cola. Fin: es la variable que indica la posición del último elemento de la cola.

Y las operaciones, como se describen a continuación.

3.5. Operaciones Con Colas

Análogamente a las pilas, es necesario definir el conjunto de operaciones básicas para especificar adecuadamente una estructura cola. Estas operaciones serían:

• Insertar(e): Inserta un elemento al final de la cola. • Eliminar(): Elimina un elemento del frente de la cola.

• Imprimir(): Imprime los elementos desde el frente hasta el final de la cola. • Vacia(): Verifica si la cola esta vacía, retorna un valor booleano. • Llena(): Verifica si la cola está llena, retorna un valor booleano. • FRENTE(): Retorna el valor del frente.

• FINAL(): Retorna el valor del fin. COLA V[MAX]: tipo_dato frente: entero fin: entero Insertar(e) Eliminar() Imprimir() Vacia() Llena() FRENTE() FINAL() elementos operaciones

[Estructura de Datos]  Page 48

Lic. Katya Perez Martinez &Lic. Gladys Chuquimia

Insertar un elemento en la cola:

Debido a la implementación estática de la estructura cola es necesario determinar si existen huecos libres donde poder insertar antes de hacerlo. Esto puede hacerse de varias formas.

Eliminar un elemento de la cola:

Como vera la eliminación no borra nada 'físicamente', sólo se encarga de actualizar el puntero 'frente' en una posición y devolver el valor x como mucho, aunque esto último no sea estrictamente necesario. Aunque esa posición aun contenga datos será considerada como vacía a efectos del otro puntero 'fin'.

In document UNIVERSIDAD SALESIANA DE BOLIVIA (página 47-51)

Documento similar