Sunteți pe pagina 1din 6

Carrera : T.N.S.

en Gestin de Sistemas Informticos y


Conectividad
Asignatura : Procesamiento y estructura de Datos
Docente : Sara Naminao

Materia: Pilas y colas


Objetivo: Utilizar mtodos de un ArrayList para la manipulacin de
datos.

Indicaciones:
Crear un proyecto en java llamado gua 4.
Utilizar un solo proyecto para todos los ejercicios.

Pauta de ejercicios:

a. Sintaxis definicin de ArrayList.

PILAS

Definicin:

Estructura de datos lineal donde los elementos pueden ser aadidos o


removidos solo por un extremo.

Trabajan con filosofa 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 aritmticas, etc

).

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.

REPRESENTACIN DE PILAS:

Usando arreglos: Define un arreglo de una dimensin (vector) donde


se almacenan los elementos.
TOPE: Apunta hacia el elemento que se encuentra en el extremo de la pila.
(Inicialmente es -1).

Ejemplo
Aplicaciones de Pilas

EXPRESIONES ARITMETICAS:
Una expresin aritmtica contiene constantes, variables y
operaciones con distintos niveles de precedencia.
OPERACIONES :
^ potencia
*/ multiplicacin, divisin
+,- suma, resta

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-

PASOS PARA EVALUAR UNA EXPRESION:

1.-CONVERTIR A POSTFIJO: convertir la expresin en notacin


infijo a notacin postfijo
2.-EVALUAR LA EXPRESION POSTFIJA: usar una pila para
mantener los resultados intermedios cuando se evala la
expresin en notacin posfijo.
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 bsicas.

REGLAS PARA CONVERTIR EXPRESION INFIJA A POSTFIJA

Se crea un string resultado donde se almacena la expresin


en postfijo.
1.- Los operandos se agregan directamente al resultado
2.- Un parntesis izquierdo se mete a la pila y tiene prioridad
o precedencia cero (0).
3.- Un parntesis derecho saca los elementos de la pila y los
agrega al resultado hasta sacar un parntesis izquierdo.
4.- Los operadores se insertan en la pila si:
a) La pila esta vaca.
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 operacin hasta
encontrar un operador con menor precedencia o la pila este
vaca).
5.- Cuando se termina de procesar la cadena que contiene la
expresin infijo se vaca la pila pasando los elementos al
resultado.

Ejemplos

Convertir las siguientes expresiones infijas a posfijo


A +B*C-D
A * ((B-C) / 2))
((X-Z)*(Y+W))/X+Y

REGLAS PARA EVALUAR UNA EXPRESION POSTFIJA

Recorrer la expresion de izquierda a derecha


1. Si es un operando
1. almacenar el valor en la pila de valores
2. Si es un operador:
1. Obtener dos operandos de la pila de valores
2. Aplicar el operador
3. Almacenar el resultado en la pila de valores
Al finalizar el recorrido, el resultado estar en la pila de
valores

Funciones Recursivas

Las pilas pueden ser usadas para implementar la


recursin en programas.
Una funcin o procedimiento recursivo es aquel que se
llama a si mismo.
Ejemplos:
Factorial
Nmeros de Fibonacci
Torres de Hanoi
Algoritmos de Ordenamiento de datos
Etc.

Aplicaciones de Pilas

Recursion

// Funcion factorial // Funcion fibonacci

public static int factorial(int n) {public static int fib(int n) {


Ejercicios:
if (n<=1) return 1; if (n==1) return 0;

else return n*factorial(n-1); else if (n==2) return 1;


1 Crear una aplicacin que permita ingresar una cantidad
determinada de nmeros en una lista y los muestre. Adems
debe permitir eliminar todos los nmeros que sean negativos y
volver a mostrar la lista resultante.

2 Crear una aplicacin que permita ingresar una cantidad


determinada de nmeros en una lista y los muestre. Adems
debe cambiar todos los nmeros negativos por 0 y vuelva a
mostrar la lista.

3 Crear una aplicacin que permita ingresar una cantidad


determinada de nmeros en una lista y los muestre. Adems
debe permitir mostrar el nmero mayor y nmero menor de la
lista.

4 Crear una aplicacin que permita ingresar una cantidad


determinada de palabras en una lista y las muestre. Adems
debe permitir mostrar la cantidad de palabras que son igual a
una determinada palabra que da el usuario.

5 Crear una aplicacin que permita ingresar una cantidad


determinada de palabras en una lista y los muestre Adems
debe mostrar la cantidad de palabras que tengan ms de 5
letras.

6 Crear una aplicacin que permita ingresar una cantidad


determinada de nmeros aleatorios entre 0 y 100 y los muestre.

7 Crear una aplicacin que permita ingresar una cantidad


determinada de palabras, las muestre, y mostrar la cantidad de
palabras que terminen con vocal.

8 Crear una aplicacin que permita ingresar una cantidad


determinada de palabras que no comiencen con vocal y luego
las muestre.

S-ar putea să vă placă și