Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Pilas Expo

Descargar como pptx, pdf o txt
Descargar como pptx, pdf o txt
Está en la página 1de 10

PILAS

Equipo:02, Algoritmos y Estructura de datos.

• Karla Yamina Santiago Antonio


• Andrés Sánchez Rivera
• Luis Ernesto Silva López
PILAS
Uno de sus elementos es la Pila (o stack); La pila es una colección de elementos en la que las
adiciones y eliminaciones de elementos nuevos siempre ocurren en el mismo extremo. El modo de
acceso a sus elementos es de tipo LIFO (Last In, First Out) que significa: el ultimo elemento que se
agrega, es el primer elemento que se elimina.

La parte inferior de la pila es importante, ya que este almacena los elementos mas antiguos,
mientras que la parte superior almacena los más recientes.
Operaciones de la
pila
La operación de la pila es la siguiente:

 Stack (): crea una nueva pila vacía. No requiere


parámetros y devuelve una pila vacía.

 push () :agrega un nuevo elemento a la parte superior de


la pila. Requiere elemento como parámetro y no devuelve
ningún contenido.

 pop (): elimina el elemento superior de la pila. No toma


parámetros y devuelve el artículo. La pila se modifica.

 peek (): devuelve el elemento superior de la pila, pero


no lo elimina. No se requieren parámetros. No modifique
la pila.

 isEmpty (): Comprueba si la pila está vacía. No se


requieren parámetros y se devuelve un valor booleano.

 isFull(): Comprueba si la pila está llena. Da un valor


booleano.
Especificación Genérica

• Las clases genéricas encapsulan operaciones que no son


específicas de un tipo de datos determinado.
• El uso más común de las clases genéricas es con colecciones
como listas vinculadas, tablas hash, pilas, colas y árboles,
entre otros.
• Las operaciones como la adición y eliminación de elementos
de la colección se realizan básicamente de la misma manera
independientemente del tipo de datos que se almacenan.
Pilas Estáticas
Se les llama pilas estáticas puesto que su tamaño se define al momento de su
creación y no puede ser cambiado luego. Este tipo de pilas se implementa con
arreglos.
La estructura de la pila estática, requiere definir el tamaño del máximo de la
pila, así como una variable auxiliar que se denomina TOPE. Esta variable se
utiliza para indicar el ultimo elemento que se inserto en la pila.
Al utilizar arreglos para implementar pilas se tiene la LIMITACIÓN de que se
debe reservar el espacio en memoria con anticipación, Una vez dado un máximo
de capacidad a la pila no es posible insertar un número de elementos mayores
que el establecido. SI introduces un nuevo elemento, se producirá un error
llamado (overflow)
Pilas dinámicas
Las pilas dinámicas trabajan en estructuras que se enlazan para formar la pila, como
crear estas estructuras solo depende de la cantidad de memoria de la que dispone
nuestra máquina podemos crear y enlazar casi tantas como queramos. De ahí el
nombre de dinámicas.
Para este tipo de estructura de deben utilizar nodos con punteros.
Ejemplos de pila en python
Nociones de complejidad de las
operaciones

Las operaciones de pila pueden


implicar inicializar la pila, usarla
y luego des-inicializar. Aparte de
estos elementos básicos, se
utiliza una pila para las siguientes
dos operaciones principales:
• push() - Empujar (almacenar)
un elemento en la pila.
• pop() - Eliminar (acceder) un
elemento de la pila.
NOCIONES DE COMPLEJIDAD DE LAS
OPERACIONES

Dependiendo el tipo de implementación de la pila, hay distintos niveles de


complejidad asociados, tanto para espacio, como en tiempo.
(Nota: Consideramos n = número de elementos en la estructura, 1 = acceso directo).

Complejidad de espacio Complejidad de tiempo Para una Usando objetos:


implementación usando arrays:

• Array: O(n).
• Acceso: O(1) • Acceso: O(1)
• Objeto: O(n).
• Búsqueda: O(n) • Búsqueda: O(n)
• Inserción: O(n) • Inserción: O(1)
En ambos casos es equivalente al número de
elementos que esta contenga • Borrado: O(n) • Borrado: O(1)
APLICACIONES
Las pilas tienen diferentes aplicaciones, en la resolución de problemas
computacionales pueden ser empleadas en:

■ Llamadas a subprogramas
■ Recursión
■ Conversión de notación infija a postfija y prefija
■ Algoritmos de ordenación, específicamente en el método Quicksort. 

También podría gustarte