Sei sulla pagina 1di 19

FACULTAD DE INGENIERIA Y SISTEMAS

CATEDRATICO:

ESTRUCTURA DE DATOS
Ing. Carlos Roberto mejia
GRUPO V01

PROYECTO:
PILAS Y COLAS

NOMBRE ORDEN ALFABETICO

CARN

Abrego Valladares, Melvin Jose

AV100311

Cruz Marroqun, Dimas Alexander

CM102911

Cruz Pacheco, David Salvador

CP

Herrera Cisneros, Ariel Amilcar

HC100410

San Salvador, 7 de NOVIEMBRE de 2015

NDICE
INTRODUCCIN.......................................................................................................3
OBJETIVOS...............................................................................................................4
Objetivo general.................................................................................................4
Objetivos especficos.......................................................................................4
PILAS INFORMATICAS.............................................................................................5
Qu es una pila?..................................................................................................5
Tcnicas de Pilas...................................................................................................6
Aplicacin de Pilas.................................................................................................9
COLAS EN INFORMATICA.....................................................................................11
Qu es una COLA?............................................................................................11
Tcnica de Colas.................................................................................................12
Aplicacin de Colas..............................................................................................14
PILAS Y COLAS......................................................................................................15
ANEXOS..................................................................................................................16

INTRODUCCIN
En mundo de la informtica es una de las reas ms extensas y completas, debido
a la necesidad del ser humano en aplicarlas en la vida cotidiana, en la actualidad
las computadoras, el software es decir la tecnologa es tan importante para
desarrollar tantas actividades de la vida desde un sencillo juego a complejos
sistemas capaces de darle vida a empresas mundiales.
En el presente trabajo nos enfatizamos en dos trminos muy importantes en el
mundo informtico tales como las pilas y las colas.
Se pueden dividir a los programas en dos partes fundamentales que son:

Algoritmos
Estructuras de datos

Los datos fsicos se encuentran asociados a un mecanismo de datos, que


controla la forma en la que la informacin puede ser accedida por los programas,
existen principalmente cuatro tipos de estos mecanismos.
Que son: Las colas, Las pilas, Las listas y Los rboles
Cada uno de los mtodos mencionados con anterioridad proporciona una solucin
a cada tipo de problema. Cada uno un dispositivo que realiza una operacin de
almacenamiento y de recuperacin de los datos dados.
Todos ellos tienen dos elementos en comn, como es:

El almacenamiento de datos
La recuperacin de datos

A continuacin se detallan los siguientes trminos pilas y colas.

OBJETIVOS
Objetivo general
Investigar, conocer y comparar las herramientas de estructura de datos en
PILAS y COLAS.

Objetivos especficos

Investigar sobre las tcnicas de pilas y colas, cmo se aplica, ventajas y


desventajas.

Crear una aplicacin en C++, aplicando los temas de pilas y colas.

PILAS INFORMATICAS
Qu es una pila?
Una pila es una estructura de datos a la cual se
puede acceder solo por un extremo de la
misma. Es decir es una lista ordenada
o estructura de datos en la que el modo de
acceso a sus elementos es de tipo LIFO (del
ingls Last In First Out, ltimo en entrar, primero
en salir) que permite almacenar y recuperar
datos. Esta estructura se aplica en multitud de ocasiones en el rea
de informtica debido a su simplicidad y ordenacin implcita de la propia
estructura. A una pila, se le conoce como una estructura de datos: ltima en
entrar, primera en salir (UEPS)
As mismo, en cada momento que el usuario se encuentre en la parte interna del
equipo pues solo se tiene al ltimo objeto apilado de lo cual es denominado TOS
que viene a significar Top of Strack de tal manera que el termino retirar tiene
como objetivo retirar la obtencin de este elemento ya que es retirado de la pila
informtica en lo cual permitir el acceso al siguiente que pasa a ser el nuevo
TOS.
Una metfora que se utiliza con frecuencia es la idea de una pila de platos en una
cafetera con muelle de pila. En esa serie, slo la primera placa es visible y
accesible para el usuario, todas las dems placas permanecen ocultas. Como se
aaden las nuevas placas, cada nueva placa se convierte en la parte superior de
la pila, escondidos debajo de cada plato, empujando a la pila de placas. A medida
que la placa superior se elimina de la pila, la segunda placa se convierte en la
parte superior de la pila. Dos principios importantes son ilustrados por esta
metfora: En primer lugar la ltima salida es un principio, la segunda es que el
contenido de la pila est oculto. Slo la placa de la parte superior es visible, por lo
que para ver lo que hay en la tercera placa, el primer y segundo platos tendrn
que ser retirados.
Las pilas son frecuentemente utilizadas en el desarrollo de sistemas informticos y
software en general. Por ejemplo, el sistema de soporte en tiempo de compilacin
y ejecucin del Pascal utiliza una pila para llevar la cuenta de los parmetros de
procedimientos y funciones, variables locales, globales y dinmicas. Este tipo de
estructuras tambin son utilizadas para traducir expresiones aritmticas o cuando
se quiere recordar una secuencia de acciones u objetos en el orden inverso del
ocurrido.
5

Tcnicas 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
de otras EDs, como:
Arreglos: Un arreglo es un conjunto de datos o una estructura de datos
homogneos que se encuentran ubicados en forma consecutiva en la memoria
RAM (sirve para almacenar datos en forma temporal).
Listas: es una de las estructuras de datos fundamentales, y puede ser usada para
implementar otras estructuras de datos.
Una pila cuenta con 2 operaciones imprescindibles: apilar y desapilar, a las que en
las implementaciones modernas de las pilas se suelen aadir ms de uso habitual.

Crear: se crea la pila vaca. (constructor)

Tamao: regresa el nmero de


elementos de la pila. (size)

Apilar: se aade un elemento a la


pila.(push)

Desapilar: se elimina el elemento


frontal de la pila.(pop)

Cima: devuelve el elemento que


est en la cima de la pila. (top o peek)

Vaca: devuelve cierto si la pila est sin elementos o falso en caso de que contenga
uno.

Utilizan arreglos. Es importante definir el tamao del mximo de la pila, as como


una variable auxiliar que se denomina TOPE. Est variable se utiliza para indicar
el ltimo elemento que se insert en la pila.

Por ejemplo, una pila puede comenzar en una posicin de la memoria de mil, y
ampliar por debajo de las direcciones, en cuyo caso, los nuevos datos se
almacenan en lugares que van por debajo de 1000, y el puntero de pila se
decremento cada vez que un nuevo elemento se agrega. Cuando un tema es
eliminado de la pila, el puntero de pila se incrementa.
Los punteros de pila pueden apuntar al origen de una pila o de un nmero limitado
de direcciones, ya sea por encima o por debajo del origen (dependiendo de la
direccin en que crece la pila), sin embargo el puntero de pila no puede cruzar el
origen de la pila. En otras palabras, si el origen de la pila est en la direccin 1000
y la pila crece hacia abajo (hacia las direcciones 999, 998, y as sucesivamente),
el puntero de pila nunca debe ser incrementado ms all de 1000 (para 1001,
1002, etc.) Si un desapilar operacin en la pila hace que el puntero de pila se deje
atrs el origen de la pila, una pila se produce desbordamiento. Si una operacin de
apilar hace que el puntero de pila incremente o decremento ms all del mximo
de la pila, en una pila se produce desbordamiento.
La pila es visualizada ya sea creciente de abajo hacia arriba (como pilas del
mundo real), o, con el mximo elemento de la pila en una posicin fija, o creciente,
de izquierda a derecha, por lo que el mximo elemento se convierte en el mximo
a "la derecha". Esta visualizacin puede ser independiente de la estructura real de
la pila en la memoria. Esto significa que rotar a la derecha es mover el primer
elemento a la tercera posicin, la segunda a la primera y la tercera a la segunda.
Aqu hay dos equivalentes visualizaciones de este proceso:

Se hace referencia a una pila por medio de un apuntador hacia el elemento en la


cima de la pila. El miembro liga del ltimo nodo de la pila, se establece en NULL
para indicar el fondo de la pila. Una pila es una versin restringida de una lista
ligada. Los nuevos nodos pueden aadirse y eliminarse de una pila slo en la
cima. Para el manejo de los datos se cuenta con dos operaciones
bsicas: apilar (push), que coloca un objeto en la pila, y su operacin inversa,
retirar (o desapilar, pop), que retira el ltimo elemento apilado.

Algoritmo de una pila

Var PILA: array [1..LONGMAX] de enteros

Funcin VACA { subprograma funcin VACA}

Inicio

Si p = 0

Entonces VACIA = cierto

Sino : VACIA = falso

Finsi

V = VACIA

Fin

{procedimiento METER (PUSH)}

procedimiento METER

Inicio

Si P = LONGMAX

entonces

escribir "error en METER"

escribir "desbordamiento de la pila"

Sino

P=P+1

S(P) = X

Finsi

Fin

Procedimiento SACAR

Inicio

Si VACIA {invocacin a la funcin VACIA}

Entonces

Escribir "error en SACAR"

Escribir "pila vaca"

Sino

X = S(P)

P=P1

Finsi

Fin

Aplicacin de Pilas
Una pila es normalmente representada en los ordenadores por un bloque de
celdas de memoria, con los "de abajo" en una ubicacin fija, y el puntero de pila de
la direccin actual de la "cima" de clulas de la pila.
Apilando un elemento en la pila, se ajusta el puntero de pila por el tamao de
elementos (ya sea decremento o incrementar, en funcin de la direccin en que
crece la pila en la memoria), que apunta a la prxima celda, y copia el nuevo
elemento de la cima en rea de la pila.
Dependiendo de nuevo sobre la aplicacin exacta, al final de una operacin de
apilar, el puntero de pila puede sealar a la siguiente ubicacin no utilizada en la
pila, o tal vez apunte al mximo elemento de la pila.
Si la pila apunta al mximo elemento de la pila, el puntero de pila se actualizar
antes de que un nuevo elemento se apile, si el puntero que apunta a la prxima
ubicacin disponible en la pila, que se actualizar despus de que el mximo
elemento se apile en la pila.
Al utilizar arreglos para implementar pilas se tiene la limitacin de que se debe
reservar el espacio en memoria con anticipacin. Una vez dado un mximo de
capacidad a la pila no es posible insertar un nmero de elementos mayor que el
mximo establecido.
Si esto ocurre, en otras palabras si la pila est llena y se intenta insertar un nuevo
elemento, se producir un error conocido como desbordamiento overflow. Una
posible solucin a este tipo de inconvenientes consiste en definir pilas de gran
tamao, pero esto resultar ineficiente y costoso si solo se utilizarn algunos
elementos. No siempre es viable saber con exactitud el nmero de elementos a
tratar, y siempre existe la posibilidad de que ocurra un error de desbordamiento.
Las pilas son estructuras muy usadas en la solucin de diversos tipos de
problemas, en el rea de computacin. Algunos de los casos ms representativos
de aplicacin de las mismas son:

10

Llamadas a subprogramas

Cuando se tiene un programa que llama a un subprograma, tambin conocido


como mdulo o funcin, internamente se usan pilas para guardar el estado de las
variables del programa, as como instrucciones pendientes de ejecucin en el
momento que se hace la llamada. Cuando termina la ejecucin del subprograma,
los valores almacenados en la pila se recuperan para continuar con la ejecucin
del programa en el punto en el cual fue interrumpido. Adems de las variables se
recupera la direccin del programa en la que se hizo la llamada, por que a esa
posicin se regresa el control del proceso.

Recursividad

Un problema que pueda ser definido en funcin de su tamao, sea este N, pueda
ser dividido en instancias ms pequeas (< N) del mismo problema y se conozca
la solucin explcita a las instancias ms simples, lo que se conoce como casos
base, se puede aplicar induccin sobre las llamadas ms pequeas y suponer que
estas quedan resueltas.

1.

Tratamiento de expresiones aritmticas

AB

= Infija

2. AB = posfija
3. AB = Prefija
AB = Infija: Esta notacin es Infija porque el
operador se encuentra entre los operadores.
AB = posfija: Esta notacin es Posfija

porque el operador se encuentra despus de


los operadores.
AB = Prefija: Esta es una notacin Prefija
porque el operador se encuentra antes de
los operadores.

Ordenacin

Ordenar significa reagrupar o reorganizar un


conjunto de datos u objetos en una secuencia
especfica La ordenacin es una actividad
fundamental.

11

COLAS EN INFORMATICA
Qu es una COLA?
Una cola es una estructura en donde los elementos son insertados en el inicio
(front) de la misma, y retirados al final de la misma, debido a ello el comportamiento
de una cola se conoce como FIFO ( primero en entrar, primero en salir ).
Las colas se utilizan en sistemas informticos, transportes y operaciones de investigacin
(entre otros), dnde los objetos, personas o eventos son tomados como datos que se
almacenan y se guardan mediante colas para su posterior procesamiento. Este tipo de
estructura de datos abstracta se implementa en lenguajes orientados a objetos mediante
clases, en forma de listas enlazadas.

Una cola es una coleccin de elementos homogneos (almacenados en dicha estructura),


en la misma se pueden insertar elementos por uno de los extremos, llamado frente, y
retirar los mismos por el otro extremo, denominado final.
Es importante aclarar que, tanto el frente como el final de la cola, son los nicos indicados
para retirar e insertar elementos, respectivamente. Esto nos indica que no podemos
acceder directamente a cualquier elemento de la cola, sino solo al primero, o sea el que
est o se encuentra en el frente, y no se pueden insertar elementos en cualquier posicin
sino solo por el final, as el elemento insertado queda como ltimo.
Por esta razn la cola es denominada una estructura F.I.F.O., o simplemente una
lista F.I.F.O., esto representa el acrnimo de las palabras inglesas first in, first out
(primero en entrar, primero en salir).

12

Tcnica de Colas
El uso de las colas es variado entre algunos tipos tenemos:
Colas circulares (anillos): en las que el ltimo elemento y el primero estn unidos.
Colas de prioridad: En ellas, los elementos se
atienden en el orden indicado por una prioridad
asociada a cada uno. Si varios elementos tienen la
misma prioridad, se atendern de modo convencional
segn la posicin que ocupen. Hay 2 formas de
implementacin: Aadir un campo a cada nodo con su
prioridad. Resulta conveniente mantener la cola
ordenada por orden de prioridad.
Crear

tantas

colas

como

prioridades

haya,

almacenar cada elemento en su cola.


Bicolas: son colas en donde los nodos se pueden aadir y quitar por ambos extremos; se
les llama DEQUE (Double Ended QUEue). Para representar las bicolas lo podemos hacer
con un array circular con Inicio y Fin que apunten a cada uno de los extremos. Hay
variantes:

Bicolas de entrada restringida: Son aquellas donde la insercin slo se hace por
el final, aunque podemos eliminar al inicio o al final.

Bicolas de salida restringida: Son aquellas donde slo se elimina por el final,
aunque se puede insertar al inicio y al final.

13

Las operaciones que se pueden realizar con una cola son:

1.

Acceder al primer elemento de la Cola

2.

Aadir un elemento al final de la Cola

3.

Eliminar el primer elemento de la Cola

4.

Vaciar una Cola

5.

Verificar el estado de la Cola: vaca, Llena.

14

Aplicacin de Colas

Las Colas tambin se utilizan en muchas maneras en los sistemas operativos para
planificar el uso de los distintos recursos de la computadora. Uno de estos recursos es la
propia CPU (Unidad Central de Procesamiento).

15

Si est trabajando en una sistema multiusuario, cuando le dice a la computadora que


ejecute un programa concreto, el sistema operativo aade su peticin a su "cola
de trabajo".

Cuando su peticin llega al frente de la cola, el programa solicitado pasa a ejecutarse.


Igualmente, las colas se utilizan para asignar tiempo a los distintos usuarios de los
dispositivos de entrada/salida (E/S), impresoras, discos, cintas y dems. El sistema
operativo mantiene colas para peticiones de imprimir, leer o escribir en cada uno de estos
dispositivos.
Aplicaciones directas:

Histrico de pginas visitadas en un browser de web

Secuencia de undo en un editor de textos.

Cadena de llamadas a mtodos en JVM o medioambiente runtime en C++.

Parsers en compiladores (reconocedores sintacticos).

SSOO

Convertir notacin infija a posfija o prefija.

Implementacin de recursividad.

Aplicaciones indirectas:

Estructuras de datos auxiliares para algoritmos.


Componentes de otras estructuras de datos.

Hay 2 formas de implementacin:


1. Aadir un campo a cada nodo con su prioridad. Resulta conveniente mantener
la cola ordenada por orden de prioridad.
2.
3. Crear tantas colas como prioridades haya, y almacenar cada elemento en su cola.

16

PILAS Y COLAS.
La diferencia radica en cuales son los elementos que salen primero.
Pilas (primeras en entrar, ltimas en salir): son como una pila de libros, los
primeros que entran a la pila son los ltimas que salen porque quedan debajo de
los ltimos.
Colas (Primeras entrar, primeras en salir): Son como la cola para comprar un
boleto del cine, los primeros en entrar ala cola son los primeros que salen de ella.
Otra diferencia es que en las pilas los tems se aaden y se eliminan en el mismo
extremo.
Se entiende por cola una estructura de datos en la que se aaden nuevos tems
en un extremo y se suprimen intems viejos en el opuesto.
A diferencia de las colas, en las pilas los tems se aaden y se eliminan en el
mismo .
Las pilas y las colas son estructuras de datos

17

homogneas.

ANEXOS.

18

19

Potrebbero piacerti anche