LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
Clase de ejemplo de implementación de una pila con punteros como tda
1. Tema de la clase
Ejemplo de Implementación de una Pila
con punteros como TDA
2. •TDA Listas
•Memoria Dinámica y uso de Punteros. Implementación de Listas mediante punteros.
•TDA Pila, definición. Uso como tipo abstracto de datos.
Luego del análisis de algunas aplicaciones que utilizan el TDA Pila, podemos concluir
que se pueden resolver las mismas sin conocer la implementación del tipo de dato ni
cómo están desarrolladas las primitivas.
Definición de Tipo Abstracto de Datos PILA
Es una colección ordenada de elementos que
se agregan y quitan por el mismo extremo
llamado TOPE.
Se conocen como estructuras LIFO (Last Input,
First Output).
Procesos o Primitivas
•Apilar. La pila crece
•Desapilar. La pila decrece
•Ver llena. No entran elementos
•Ver vacía. No hay elementos
•Crear. Se prepara para
utilizar
Lo visto hasta ahora….
3. Veamos algunos ejemplos
Agregar (apilar) a una pila (de números) vacía:
Agrego Antes Después
10 Tiene NULO 10
8 10 8 10
22 8 10 22 8 10
13 22 8 10 13 22 8 10
TOPE
TOPE
TOPE
TOPE
TOPE
TOPE
TOPE
TOPE
4. Veamos algunos ejemplos
Agregar (apilar) a una pila (de números) vacía:
Agrego Antes Después
10 Tiene NULO 10
8 10 8 10
22 8 10 22 8 10
13 22 8 10 13 22 8 10
Quitar(desapilar) de una pila (de números) no vacía:
Antes Después Salió
13
22
8
Tiene NULO 10
13 22 8 10 22 8 10
22 8 10 8 10
8 10 10
10
TOPE
TOPE
TOPE
TOPE
TOPE
TOPE
TOPE
TOPE
TOPE
TOPE
TOPE
TOPE
TOPE
TOPE
TOPE
TOPE
5. La pila está vacía
1. Apilar el valor 10
2. Apilar el valor 8
3. Apilar el valor 12
Veamos algunos ejemplos
10
TOPETOPE
4. Desapilar (devuelve 12)
Inicio Paso 1
12
TOPE
8
10
Paso 4
8
TOPE
10
Paso 2
12
8
10
TOPE
Paso 3
5. Apilar el valor 22
6. Apilar el valor 15
7. Desapilar (devuelve 15)
8. Desapilar (devuelve 22)
9. Desapilar (devuelve 8)
TOPE
Paso 5
22
8
10
TOPE
15
22
8
Paso 6
10
TOPE
15
22
8
10
Paso 7
22
8
10
TOPE
Paso 8
8
10
TOPE
Paso 9
Tiene
NULO
6. Cómo implementar el TDA Pila con punteros
Una posible implementación del TDA Pila es mediante el uso de
memoria dinámica.
Se trata de armar una cadena de nodos, donde siempre se apila y de
desapila por el comienzo (TOPE).
Se debe tener en cuenta que esta implementación se puede confundir
con una Lista Simplemente Enlazada, en la cual siempre se agrega y se
quita por el inicio.
Para que esto no suceda se debe comprender que trabajar con un TDA
implica que las aplicaciones deben utilizar únicamente las primitivas.
Esto quiere decir que la implementación (estructura de datos y
primitivas) quedan “encapsuladas”.
7. Veamos mediante un esquema cómo Apilar
Estrategia:
(1)Obtener un Nodo, asignar el valor que se quiere apilar;
(2)Enganchar el nodo desde el punto de comienzo de la cadena de nodos
(TOPE).
Para el paso (2) se debe considerar dos casos: Pila Vacía; Pila no Vacía
Caso: Pila Vacía
TOPE
pNvo
10
N
U
L
O
Antes de Apilar
Después de Apilar
TOPE
8
(1)
(2)
16 22
N
U
L
O
Caso: Pila no Vacía
Antes de Apilar
TOPE
pNvo
10(1)
Después de Apilar
(2) TOPE
(a)
(b)
(a) Primero se conecta la
componente siguiente
del nuevo nodo al nodo
que estaba en primer
lugar;
(b) Luego se conecta el
TOPE al nuevo nodo
Contiene NULO
Apilar el valor 10
8. TOPE
Veamos mediante un esquema cómo Desapilar
Estrategia:
(1)Asignar el valor del primer nodo a una variable y desenganchar el nodo desde
el punto de comienzo de la cadena de nodos (TOPE);
(2)Devolver el nodo.
Caso: La Pila queda Vacía
TOPE
10
N
U
L
O
Antes de Desapilar
Después de Desapilar
TOPE 810 16
N
U
L
O
Caso: La Pila no queda Vacía
Antes de Despilar
TOPE
p
Después de Desapilar
Variable recibe 10
p
Variable recibe 10
(a)
(b)
(a) Primero se apunta al
nodo a eliminar;
(b) Luego se conecta el
TOPE al nodo siguiente
al primero
Asignar NULO a TOPE
9. 1) Escribir en C++ las primitivas del TDA Pila (Apilar, Desapilar,
Crear, verVacio) a partir de la estrategia vista.
2) El TDA Cola es una colección ordenada de elementos que se
agregan y quitan por diferentes extremos (llamados FRENTE, por
donde sale; y FONDO por donde entra). Se conoce como
estructuras FIFO (First Input, First Output).
Mostrar mediante esquemas la implementación del TDA Cola
mediante punteros: Ejemplos, primitivas Encolar y Desencolar.
Para concluir
Bibliografía Ampliatoria:
•Estructuras de Datos y Algoritmos, Aho, Hopcroft , Ullman
•Pascal y Estructura de Datos, Dale & Lilly
Dejamos planteados dos ejercicios:
10. 1) Escribir en C++ las primitivas del TDA Pila (Apilar, Desapilar,
Crear, verVacio) a partir de la estrategia vista.
2) El TDA Cola es una colección ordenada de elementos que se
agregan y quitan por diferentes extremos (llamados FRENTE, por
donde sale; y FONDO por donde entra). Se conoce como
estructuras FIFO (First Input, First Output).
Mostrar mediante esquemas la implementación del TDA Cola
mediante punteros: Ejemplos, primitivas Encolar y Desencolar.
Para concluir
Bibliografía Ampliatoria:
•Estructuras de Datos y Algoritmos, Aho, Hopcroft , Ullman
•Pascal y Estructura de Datos, Dale & Lilly
Dejamos planteados dos ejercicios: