Sei sulla pagina 1di 20

PILASS

dulce viridiana mora hernandez


jose eduardo barron bravo
roberto carlos rodriguez tamayo
olga judith quiroz ramirez
somos de la clase del martes de 8:45 a
10:30

Definicin
Una pila representa una estructura lineal de datos en
la que se puede agregar o quitar elementos
nicamente por uno de los dos extremos. En
consecuencia, los elementos de una pila se eliminan
en orden inverso al que se insertaron; es decir, el
ltimo elemento que se mete en la pila es el primero
que se saca. Debido a esta caracterstica, se le conoce
como estructura LIFO (Last-Input, First-Output: el
ultimo en entrar es el primero en salir).

Representacin de
Pilas

Las pilas no son estructuras


fundamentales de datos; es decir, no
estn definidas como tales en los
lenguajes de programacin. Para su
representacin requieren el uso de
otras estructuras de datos, como:

Arreglos
Listas

Se utilizaran arreglos. En consecuencia,


es importante definir el tamao mximo
de la pila, as como una variable auxiliar a
la que se denomina TOPE. Esta variable se
utiliza para indicar el ltimo elemento
que se inserto en la pila. En la siguiente
figura se presentan dos alternativas de
representacin de una pila, utilizando
arreglos.

Alternativas de representacin de una pila

Operaciones
Con Pilas

Para el caso de las pilas, las operaciones bsicas que


se pueden llevar a cabo son:
Insertar un elemento -Push- en la pila (Apilar).
Eliminar un elemento -Pop- de la pila (Desapilar).
Y las operaciones auxiliares:

Pila vaca
Pila llena

Pila vaca (PILA,TOPE,BAND)


1. Si (TOPE = 0) {Verifica si no hay elementos
almacenados en la pila}
entonces
Hacer BAND VERDADERO {La pila esta vaca}
si no
Hacer BAND FALSO{La pila no esta vaca}
2. {Fin del condicional del paso 1}

Pila llena (PILA,TOPE,MAX,BAND)


1. Si (TOPE = MAX)
entonces
Hacer BAND VERDADERO {La pila est llena}
si no
Hacer BAND FALSO {La pila no est llena}
2. {Fin del condicional del paso 1}

Pone (PILA,TOPE,MAX,DATO).
1.Llamar a Pila llena con PILA, TOPE, MAX y BAND

2.SI (BAND = VERDADERO)


entonces
Escribir Desbordamiento-pila llena
si no
Hacer TOPE TOPE + 1 y PILA[TOPE] DATO
{Actualiza TOPE e inserta el nuevo elemento en el TOPE
de PILA}
3.{Fin de la condicin del paso 2}

Quita (PILA,TOPE,DATO)
1.Llamar a Pila vacia con PILA, TOPE y BAND
2.SI (BAND = VERDADERO)
entonces
Escribir Subdesbordamiento-pila vaca
si no
Hacer DATO PILA [TOPE] y TOPE TOPE - 1
{Actualiza TOPE}
3.{Fin de la condicin del paso 2}

Aplicaciones de las
Pilas

Llamadas a subprogramas
Recursividad
Tratamiento de expresiones aritmticas
Ordenacin

Llamadas a Subprogramas:
Permite guardar la direccin del programa, o
subprograma, desde donde se hizo la llamada a
otros subprogramas, para regresar
posteriormente y seguir ejecutndolo a partir
de instrucciones inmediatas a la llamada.
Permite guardar el estado de las variables en el
momento en que se hace la llamada, para
seguir ocupndolas al regresar del
subprograma.

Recursividad
Podemos definir la recursividad como un
proceso que se define en trminos de s mismo.
Un ejemplo de esto es cuando se toma una
fotografa de una fotografa, o cuando en un
programa de televisin 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 tpicos de estructuras de datos definidas


de manera recursiva son los rboles binarios y
las listas enlazadas.
La recursin se puede dar de dos formas:
DIRECTA. Este tipo de recursin 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.

Tratamiento de expresiones aritmticas:

Convertir expresiones en notacin infija a su


equivlete en notacin prefija o posfija.
Infija (A + B)
Posfija AB+
Prefija +AB
Ejemplo:
Expresin infija: (X+Z)*W/T^Y-V
Expresin posfija: XZ+W*TY^/V-

PASO

EXPRESION

(X+Z)*W/T^Y-V

XZ+*W/T^Y-V

XZ+*W/TY^-V

XZ+W*/TY^-V

XZ+W*TY^/-V

XZ+W*TY^/V-

Potrebbero piacerti anche