Está en la página 1de 30

Nombre Matricula Carrera

Samuel González 1905681 ITS


Gutiérrez

PILAS, COLAS
y LISTAS
TABLE OF CONTENTS

Pilas
Definición, Características, Ventajas y
Desventajas
01

Colas
Definición, Características, Ventajas y
Desventajas
02

Listas
Definición, Características, Ventajas y
Desventajas
03
PILAS

Definición
Una pila es una lista ordinal o
estructura de datos en la que el
modo de acceso a sus elementos
es de tipo LIFO que permite
almacenar y recuperar datos.
Características
La característica más importante de la
pila es que el último elemento insertado
en ella es el primero en suprimirse

Por esta razón, una pila se denomina


como una estructura LIFO (Last-Input,
FirstOutput) en la cual, el último
elemento insertado, será el primero en
ser eliminado.

LIFO: (Last-Input, FirstOutput)


último en entrar, primero en salir.
VENTAJAS

USO DE MEMORIA SIMPLICIDAD CONSISTENCIA

su uso de memoria es mínimo tiene un rendimiento


No usa conceptos
debido a que parte de lo que es igualmente bueno en los
avanzados de ciencia
necesario para tener una lista mejores y peores casos, es
computacional, y eso lo
inicial de elementos para ser particularmente adecuado su
hace más fácil para que
ordenados no necesita espacio uso en sistemas en los que el
los programadores lo
en memoria adicional para tiempo de respuesta es
implementen
funcionar crítico.
correctamente.
DESVENTAJAS

LIMITADO
La memoria Stack es muy limitada. La
creación de demasiados objetos en la pila
puede aumentar el riesgo de desbordamiento
de la pila. El acceso aleatorio no es posible. El
almacenamiento de variables se sobrescribirá,
lo que a veces conduce a un comportamiento
indefinido de la función o el programa
Operaciones básicas de pilas
Push: Método para insertar un dato en la cima de la pila.

-El método Push() recibe como parámetro


el dato que se desea insertar en la pila

Pop: Método para eliminar el dato ubicado en la cima de la pila

-El método Pop() no recibe parámetros; simplemente


elimina el dato ubicado en el Top de la pila
Tipos de pilas

Estáticas - Basadas en arreglos.

PILAS

Dinámicas – Basadas en listas enlazadas.


EJEMPLOS DE PILAS
LINEAS EJECUCION
1.- Este es un programa muy simple que escribe en orden inverso una
sucesión de números leídos desde el teclado: 1 Se crea una pila
auxiliar vacía.
1. Pila p; Suponemos que se
guardan enteros en
2. int numero; la pila
3. printf ("ingresa números positivos, termina con –1\n");
4. scanf(“%d”,&numero);
4 Se leen números
5. while (numero!=-1) mientras estos
sean distintos de –
6.     { 1
7.     poner(p,numero);
8.     scanf(“%d”,&numero); 7 El número se
agrega a la pila por
9.     } while (!vacia(p)) print (“%d ”,sacar(p)); arriba

10 Mientras haya
números en la pila,
se sacan (por
arriba) y se
escriben
EJEMPLOS DE PILAS
2.- Una triquiñuela
Este método recibe una Pila (suponemos que se guardan enteros
en ella) y la devuelve invertida, usando una cola auxiliar.
1. void invertir(Pila p) LINEAS EJECUCION
2. {
10 La función invertir recibe una Pila p, de
3. Cola c; la clase PilaString. Si bien la referencia
4. while (!vacia(p)) NO puede cambiar, el contenido del
objeto puede ser modificado dentro de
5.     { la función y el cambio se verá en todo el
6.     int n = sacar(p); programa.
7.     encolar(c,n); 13 Se crea una cola auxiliar vacía.
8.     }
16 - 17 Se saca el elemento de la pila y se pone en
9. while (!vacia(c)) la cola. Esto mismo se podría haber escrito
10.  poner(p,decolar(c)); así: encolar(c,sacar(p));
11. } 19 - 20 Mientras haya elementos en la cola, se
van sacando y colocando en la pila
EJEMPLOS DE PILAS
3.- Otra más
Análogo al ejemplo anterior, pero usando dos pilas en vez de una
cola.
1. void invertir(Pila p) LINEAS EJECUCION
2. {
22 - 23 Se vacia la pila p en la pila aux1
3. Pila aux1, aux2;
4. while (!vacia(p))
5.     poner(aux1,sacar(p));
6. while (!vacia(aux1))
7.     poner(aux2,sacar(aux1)); 24 - 25 Se vacia la pila aux1 en la pila aux
8. while (!vacia(aux2)) 2
9. poner(p,sacar(aux2)); 26 - 27 Se vacia la pila aux2 en la pila p
10.}
COLAS

Definición
Una cola es una estructura de datos que
almacena elementos en una lista y
permite acceder a los datos por uno de
los dos extremos de la lista. Un elemento
se inserta en la cola (parte final) de la
lista y se suprime o elimina por la frente
(parte inicial, cabeza) de la lista.
CARACTERISTICAS
Los elementos se eliminan (se quitan) de
la cola en el mismo orden en que se
almacenan y, por consiguiente, una cola
es una estructura de tipo FIFO (firs-in
first-out , primero en entrar, Primero en
salir o bien primero en llegar/primero en
ser servido).
VENTAJAS

VELOCIDAD LONGITUD

Las colas tienen la ventaja de Las colas pueden tener una


poder manejar múltiples tipos longitud potencialmente
de datos y son flexibles, infinita en comparación con el
flexibles y rápidas. uso de matrices de longitud
fija.
DESVENTAJAS

Para incluir un nuevo elemento en la cola, se


deben eliminar los demás elementos.
Operaciones básicas de las colas

- Insertar
La inserción en las colas se realiza por la cola
de las mismas, es decir, se inserta al final de la estructura.

- Borrar
El borrado es una operación muy simple en las colas.
Esta operación supone extraer la cabeza de la
cola, ya que es el elemento que más tiempo lleva
en la estructura.
Tipos de colas
EJEMPLOS DE COLAS
Ejemplo 1: un ejemplo “real” En un establo se guarda un rebaño de hipopótamos. Se desea ordenar los hipopótamos según su peso, usando
dos establos adicionales. Los establos son tan angostos que los hipopótamos deben estar formados en fila. Cada establo tiene un abertura
que es la entrada y salida al mismo tiempo.

1.- while (!vacia(establo1)) 16.- poner(establo3,h);


2.- { 17.- poner(establo2,h2);
3.- Hipo h=sacar(establo1); 18.- }
4.- poner(establo2,h); 19.- }
5.- while (!vacia(establo1)) 20.- while (!vacia(establo3))
6.- { 21.- poner(establo1,sacar(establo3));
7.- Hipo h2=sacar(establo1); 22 .-}
8.- h=sacar(establo2);
 9.- if (peso(h) < peso(h2))
 10.- {
 11.- poner(establo2,h);
 12.- poner(establo3,h2);
 13.- }
 14.- else
 15.- {
         
EJEMPLOS DE COLAS
EJEMPLO 1

LINEAS EJECUCION
34 - 35 Se pasa un hipo del establo1 al establo2 (donde estan todos ordenados)

38 - 48 Se saca un hipo del establo 1 y se compara con el hipo mas gordo del establo 2. El mas flaco se deja en el establo
2 y el otro se tira al establo 3

36 Esto se hace mientras haya hipos en el establo 1

51 - 52 Se mueven todos los hipos desdel establo3 hacia el establo1

36 Esto se repite mientras haya hipos en el establo 1


EJEMPLOS DE COLAS
Ejemplo 2: La boletería del cine
Para ir a ver la película "Titanic II, la ira de Rose" hay dos filas de personas. Un acomodador es el encargado de dejar entrar a la gente. Sus
instrucciones son simples: "deja entrar siempre a la persona que es mayor, si tienen la misma edad, a gente de la fila 1 tiene preferencia". El
siguiente código muestra el comportamiento del acomodador. Suponemos que las colas guardan referencias a Personas:

1.- while (!vacia(cola1) || !vacia(cola2))


2.- { 11.- Persona p1=cabeza(c1);
3.- Persona p; 12.- Persona p2=cabeza(c2);
4.- if (vacia(c1)) 13.- if (p1.edad <= p2.edad) p=decolar(c1);
5.- p=decolar(p); 14.- else
6.- else 15.- p=decolar(c2);
7.-  if (vacia(c2)) 16.- }
8.-  p=decolar(c1); 17.- println ("Se atiende a %s de %d años\n",p.nombre,p.edad);
9.- else 18.- }
10.- {          
   
EJEMPLOS DE COLAS
EJEMPLO 2
         
LINEAS EJECUCION
54 Mientras una de las dos colas tenga gente…

57 - 61 Si una de las colas esta vacia, se deja entrar a la 1 a gente de la otra cola

64 - 65 Vemos quienes estan parados al inicio de cada cola

66 Si es menor el de la cola 1, pasa el

67 - 68 Si no el otro
EJEMPLOS DE COLAS
Ejemplo 3.- Una triquiñuela
Este método recibe una Pila (suponemos que se guardan enteros
en ella) y la devuelve invertida, usando una cola auxiliar.
1. void invertir(Pila p) LINEAS EJECUCION
2. {
10 La función invertir recibe una Pila p, de
3. Cola c; la clase PilaString. Si bien la referencia
4. while (!vacia(p)) NO puede cambiar, el contenido del
objeto puede ser modificado dentro de
5.     { la función y el cambio se verá en todo el
6.     int n = sacar(p); programa.
7.     encolar(c,n); 13 Se crea una cola auxiliar vacía.
8.     }
16 - 17 Se saca el elemento de la pila y se pone en
9. while (!vacia(c)) la cola. Esto mismo se podría haber escrito
10.  poner(p,decolar(c)); así: encolar(c,sacar(p));
11. } 19 - 20 Mientras haya elementos en la cola, se
van sacando y colocando en la pila
LISTAS

Definición
Una lista es una estructura de datos
en la cual los elementos
almacenados en la
misma pueden ser agregados,
borrados y accedidos sin
03
restricciones, en cualquier
punto de la estructura.
CARACTERISTICAS
En las listas se pueden ver todos los
elementos de la estructura, permitiendo
realizar recorridos y consultas de los
datos.

El corriente, elemento de
El principio, a partir del referencia en la lista, a partir
cual se inician las del cual se realizan borrados,
búsquedas y recorridos inserciones y modificaciones.
VENTAJAS

FLEXIBILIDAD

Su ventaja fundamental es que


son flexibles a la hora de
reorganizar sus
elementos
DESVENTAJAS

LENTITUD

A diferencia de las colas y pilas


este tiene una mayor lentitud a
la hora de acceder a cualquier
elemento.
Operaciones básicas de las listas
- Insertar
La operación insertar consiste en la introducción de un nuevo elemento en la
lista.
En una lista no ordenada no es necesario mantener ningún
orden, por lo tanto la inserción de
elementos se puede realizar en cualquier lugar de la lista, al
principio, al final, en una posición
aleatoria.

- Borrar
La operación borrar consiste en la eliminación de la lista de un elemento
concreto. El elemento a borrar será escogido por el programador.
Tipos de listas
EJEMPLOS DE LISTAS
>>> primos = [2, 3, 5, 7, 11] >>> r = range(0, 20, 2)
Para saber si
usar una lista >>> primos >>> r
un elemento x
literal, con los [2, 3, 5, 7, 11] [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
está en la lista
valores entre >>> [] >>> 12 in r
l
corchetes: [] True
>>> [1.0 + 2.0, 3.0 + 4.0 + 5.0] >>> 15 in r
[3.0, 12.0] False
>>> ['hola ' + 'mundo', 24 * 7, True >>> 15 not in r
or False] True
['hola mundo', 168, True]
>> list('hola')
usar la función
>>> primos = [2, 3, 5, 7, 11] list aplicada ['h', 'o', 'l', 'a']
agrega el >>> primos.append(13) sobre un iterable >>> list(range(10))
elemento x al >>> primos.append(17)
final de la lista >>> primos
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[2, 3, 5, 7, 11, 13, 17] >>> list()
[]
BILBLIOGRAFIA

● https://sites.google.com/site/miguelestructura/que-son-las-pilas-en-estructuras-de-datosIcons by
Flaticon
● https://www.uv.mx/personal/ermeneses/files/2021/08/Clase7-Pilas.pdf
● https://www.utm.mx/~rruiz/cursos/ED/material/pila.pdfhttps://ccc.inaoep.mx/ingreso/
programacion/corto2015/Curso-PROPE-PyED-5-Pilas-Colas.pdf
● https://resumenea.com/cuales-son-las-ventajas-y-desventajas-de-la-pila/

También podría gustarte