Você está na página 1de 10

ALGORTMICA Y PROGRAMACIN II.

Profa. Ing. MSc. Lennys Camargo.


UNIDAD II
Introduccin a las Estructuras de Datos Dinmicas Avanzadas: Pilas, Colas y rboles

La forma ms directa de tener Pilas y colas en Python es usando listas, una de las
poderosas estructuras de datos que vienen con el lenguaje.
Los mtodos de lista hacen que resulte muy fcil usar una lista como una pila,
donde el ltimo elemento aadido es el primer elemento retirado (ltimo en
entrar, primero en salir). Para agregar un tem a la cima de la pila, use append().
Para retirar un tem de la cima de la pila, use pop()sin un ndice explcito. Por
ejemplo:

ESTRUCTURAS DINMICAS:
PILAS:
Una Pila es una estructura de datos similar a las listas, pero las pilas tienen una
restriccin, slo se puede agregar y remover datos al final de la pila, no en medio, ni al
otro extremo, se le llama del tipo LIFO(Last In Firts Out) es decir: El primero en entrar
es el ltimo en salir.

ALGORTMICA Y PROGRAMACIN II.


Profa. Ing. MSc. Lennys Camargo.
UNIDAD II
Introduccin a las Estructuras de Datos Dinmicas Avanzadas: Pilas, Colas y rboles

Un ejemplo para ilustrar lo anterior es : imagnese una pila de platos. Slo es posible
aadir platos en la parte superior de la pila, y slo pueden tomarse del mismo extremo.

Para colocar (insertar) un plato en la pila, ste se


ubica en la parte superior y para quitarlo(eliminar)
tambin se toma el que se encuentra en la parte
superior, ya que por el contrario, toda la pila se
derribara.

Para simular una Pila en Python usando listas, simplemente se utilizan las funciones
pop() y append(), donde pop() es la que remueve (eliminar) un elemento del tope de
la pila y append() aade (registra) un elemento al tope.
Ejemplo:
Utilizando append(). Caso: creando una pila vaca
Utilizando pop(), la cual no slo retira un elemento de la pila, sino, que devuelve dicho
valor y puede ser capturado y usado posteriormente.
Ejemplo :
pila=[2,4,5]
print pila
pila.append(6)
pila.append(7)
print pila
pila.pop()
print pila

ALGORTMICA Y PROGRAMACIN II.


Profa. Ing. MSc. Lennys Camargo.
UNIDAD II
Introduccin a las Estructuras de Datos Dinmicas Avanzadas: Pilas, Colas y rboles

Tarea: utilizando PILAS codificar en python un programa que determine,

si una

palabra es un palndromo, es decir, que se lee igual al derecho y al revs (como oso,
reconocer y somos).

Ejemplos Prcticos
1. Programa en python que lee la edad de un nmero desconocido de personas,
utilizando listas, y estructuras de datos PILAS. Se utiliza programacin modular y un
men de opciones para Registrar (append) y Eliminar (pop) registros.
global lista
listaedad=[]
def registrar():
n=input('cantidad de edades a procesar')
for i in range (0,n):
edad=input('INTRODUZCA SU EDAD ')
listaedad.append(edad)

def mostrar():
print (listaedad)

def eliminar():

ALGORTMICA Y PROGRAMACIN II.


Profa. Ing. MSc. Lennys Camargo.
UNIDAD II
Introduccin a las Estructuras de Datos Dinmicas Avanzadas: Pilas, Colas y rboles
listaedad.pop()
def principal():
opcion=1
while (opcion!=4):
print ("Operaciones con PILAS")
print("1. REGISTRAR EN LA PILA")
print("2. MOSTRAR LA PILA")
print("3. ELIMINAR UN ELEMENTO DE LA PILA")
print("4. SALIR")
print ("Introducir la opcion del menu deseada")
opcion=input()
if (opcion==1):
registrar()
elif (opcion==2):
mostrar()
elif (opcion==3):
eliminar()
elif (opcion==4):
print ("FIN DEL PROGRAMA!!!!")
else:
print ("OPCION INCORRECTA!!!!")

principal()

ALGORTMICA Y PROGRAMACIN II.


Profa. Ing. MSc. Lennys Camargo.
UNIDAD II
Introduccin a las Estructuras de Datos Dinmicas Avanzadas: Pilas, Colas y rboles
2. Programa en python que lee el nombre de un nmero desconocido de personas,
utilizando listas, y estructuras de datos PILAS. Se utiliza programacin modular y un
men de opciones para Registrar (append) y Eliminar (pop) registros.
global lista
listanombre=[]
def registrar():

n=input('cantidad de elementos a procesar')


for i in range (0,n):
nombre=raw_input('INTRODUZCA SU NOMBRE ')
listanombre.append(nombre)

def mostrar():
print (listanombre)

def eliminar():
listanombre.pop()
def principal():
opcion=1
while (opcion!=4):

ALGORTMICA Y PROGRAMACIN II.


Profa. Ing. MSc. Lennys Camargo.
UNIDAD II
Introduccin a las Estructuras de Datos Dinmicas Avanzadas: Pilas, Colas y rboles

print ("Operaciones con PILAS")


print("1. REGISTRAR EN LA PILA")
print("2. MOSTRAR LA PILA")
print("3. ELIMINAR UN ELEMENTO DE LA PILA")
print("4. SALIR")
print ("Introducir la opcion del menu deseada")
opcion=input()
if (opcion==1):
registrar()
elif (opcion==2):
mostrar()
elif (opcion==3):
eliminar()
elif (opcion==4):
print ("FIN DEL PROGRAMA!!!!")
else:
print ("OPCION INCORRECTA!!!!")

principal()

ALGORTMICA Y PROGRAMACIN II.


Profa. Ing. MSc. Lennys Camargo.
UNIDAD II
Introduccin a las Estructuras de Datos Dinmicas Avanzadas: Pilas, Colas y rboles

COLAS:
Implementar una cola requiere algo ms. En las colas, a diferencia de las pilas, el
primer valor insertado es el primero en quitarse (FIFO), en otras palabras, inserto al
final de la cola y elimino al principio de la misma.
Imaginen, una cola para entrar al cine: las personas que van llegando a la taquilla a
comprar el ticket, deben insertarse (registrar) al final de la cola( append()) y los que
estn siendo atendidos, van saliendo (eliminar) de la cola (popleft() )

Un primer intento es implementarla con append() y pop() que obtiene el primer


elemento (o con insert insertando al principio y pop). Pero las listas de Python, si bien
estn optimizadas para insertar al final y quitar del final, no lo estn para insertar al
principio o quitar del principio. La solucin es utilizar collections.deque que si
est implementada con estas operaciones optimizadas.
Ejemplo:
programa para trabajar con colas. Inserta datos al final de la cola y elimina datos al
principio de la cola. Ejercicio con los datos precargados en la lista(cola)

from collections import deque


cola = deque([1,2,3])
cola.append(4) # registra al final de la cola
print cola
cola.popleft() # elimina el dato que esta a la izquierda de la cola
cola.popleft()
print cola

ALGORTMICA Y PROGRAMACIN II.


Profa. Ing. MSc. Lennys Camargo.
UNIDAD II
Introduccin a las Estructuras de Datos Dinmicas Avanzadas: Pilas, Colas y rboles

Ejemplo:
Programa en python, que lee por teclado un dato numrico. La edad de una
persona.
from collections import deque
colaedad=deque([])
edad = input('INTRODUZCA LA EDAD')
colaedad.append(edad) # registra al final de la cola
print colaedad
colaedad.popleft() # elimina el dato que esta a la izquierda de la cola
print colaedad

Ejemplo:
programa en python que lee el nombre y la edad de una persona. Programacin
Modular. Utilizando men de opciones.
from collections import deque
colanombre=deque([])
colaedad=deque([])

def registrar():

n=input('cantidad de elementos a procesar')


for i in range (0,n):
nombre=raw_input('INTRODUZCA SU NOMBRE ')
colanombre.append(nombre)

ALGORTMICA Y PROGRAMACIN II.


Profa. Ing. MSc. Lennys Camargo.
UNIDAD II
Introduccin a las Estructuras de Datos Dinmicas Avanzadas: Pilas, Colas y rboles

edad = input('INTRODUZCA LA EDAD')


colaedad.append(edad)

def mostrar():
print (colanombre)
print (colaedad)

def eliminar():
colaedad.popleft()
colanombre.popleft()
def principal():
opcion=1
while (opcion!=4):
print ("Operaciones con COLAS")
print("1. REGISTRAR EN LA COLA")
print("2. MOSTRAR LOS ELEMENTOS DE LA COLA")
print("3. ELIMINAR UN ELEMENTO DE LA COLA")
print("4. SALIR")
print ("Introducir la opcion del menu deseada")
opcion=input()
if (opcion==1):
registrar()
elif (opcion==2):
mostrar()
elif (opcion==3):
eliminar()
elif (opcion==4):

ALGORTMICA Y PROGRAMACIN II.


Profa. Ing. MSc. Lennys Camargo.
UNIDAD II
Introduccin a las Estructuras de Datos Dinmicas Avanzadas: Pilas, Colas y rboles

print ("FIN DEL PROGRAMA!!!!")


else:
print ("OPCION INCORRECTA!!!!")

principal()

http://lignux.com/pilas-de-datos/

Infografa

http://lignux.com/pilas-en-python/

http://es.slideshare.net/RoverOportunity2012/python-pilas-y-colas
http://www.iuma.ulpgc.es/users/jmiranda/docencia/programacion/Tema4_ne.pdf
http://mauortiz117.blogspot.com/2011/07/pilas-y-colas.html
http://waymoot.org/home/python_string/

Você também pode gostar