SlideShare una empresa de Scribd logo
TDA PILA
ESTRUCTURAS DE DATOS
LA PILA: UN TDA SIMPLE
 Uno de los conceptos mas utiles en computacion es la pila o stack
 Es un conjunto de elementos, en la que:
 Los elementos se añaden y se remueven por un solo extremo
 Este extremo es llamado “tope” de la pila
La ultima en llegar,
sera la primera en
salir:
LAST IN, FIRST
OUT
LIFO
 Ejemplo:
 Cuando un empleado se va de vacaciones, le llega correo a su escritorio.
 Las cartas se van “apilando”.
 Al regresar de vacaciones, la ultima carga en llegar, sera la primera que revisara
 Al terminar de revisarla, la nueva carta del tope de la pila habra cambiado
 Del “pilo” de cartas, la mas nueva que queda, sera la siguiente en ser revisada
TDA PILA: DEFINICION
 Dada una Pila llamada S
 ¿Qué datos serian importantes conocer sobre la Pila?
 ¿Y que operaciones podriamos efectuar a la misma?
Push(s,elemento1)
Elemento 1
Tope
o Cima
Push(s,elemento2)
Elemento 2
Push(S,elemento3)
Elemento 3
Pop(S)
EstaVacia?NoSi
 Al revisar c/carta, se la “sacaba” de la pila
 elemento = pop(s)
 La operación pop remueve el elemento Tope de
la pila y lo retorna. La pila disminuye su tamaño
 Usemos el ejemplo del correo:
 Al acumularse,
 Cada carta(elemento), era “metida” a la pila:
push(s,elemento)
 La operación push aumenta un elemento a la pila,
y esta aumenta en su tamaño
PILA: OPERACIONES
EliminarPila(Pila)
Efecto: recibe una pila y la libera completamente
EstaVacia(Pila) retorna -> Boolean
Efecto: Devuelve true si esta vacia y false en caso contrario
Push(pila, elemento)
Efecto: Toma la pila y aumenta su tamaño, poniendo
el elemento en la cima de la pila
Pop(Pila) retorna -> elemento
Efecto: Recibe la pila, remueve el elemento tope y lo retorna
Excepcion: Si la pila esta vacia, produce error
TopePila(Pila) retorna -> elemento
Efecto: Devuelve el elemento cima de la pila
Excepcion: Si la pila esta vacia produce error
InicializarPila(Pila)
Efecto: recibe una pila y la inicializa para su trabajo normal
TDA PILA: DEFINICION
FORMAL
<pila> ::= <tope> + {<nodo>}
<tope> ::= <enlace>
<enlace> ::= (<<ReferenciaNodo>> | NULL)
<nodo> ::= <contenido> + <enlace>
<contenido> ::= <<dato>>{<<dato>>}
 En conclusion:
 La pila es un conjunto de elementos
 De los cuales solo conozco y puedo ver el TOPE
 Cada elemento en la pila
 Puede contener informacion de cualquier tipo, es decir, es generico
OTRAS OPERACIONES
 Al remover el ultimo elemento de una pila esta queda vacia
 Una vez vacia, no se pueden “sacar” mas elementos de la pila
 Antes de sacar un elemento de la pila
 Debemos saber si la pila Esta Vacia?: EstaVacia(s)
 El tope de la pila siempre esta cambiando
 Deberiamos poder “revisar” el elemento tope de la pila: TopePila(s)
 Si la pila esta vacia, no debe existir un valor tope
 El tratar de remover elementos o acceder a elementos de una pila
vacia se llama
 SUBDESBORDAMIENTO de la pila
TDA PILA:
IMPLEMENTACION
 Hay varias formas, analicemos la mas sencilla
 La Pila es una Lista… pero limitada
 En la lista los nuevos nodos se pueden insertar y remover
 Al/Del Inicio, al final, dada una posicion, etc.
 En la Pila los elementos solo se pueden insertar al final de la
Pila
 Y solo se pueden remover del Final de la Pila
 Las impelmentaciones de la Lista Simplemente Enlazada
 Estatica o Dinamica
 Nos sirven perfectamente para la Pila
IMPLEMENTACION
ESTATICA
 La Pila seria una Lista Contigua
 typededef LCont Pila;
 Y solo deberemos implementar las operaciones de
 Push, llamando a InsertarNodoFinal
 Pop, llamando a SacarNodoFinal
 TopePila, llamando a ConsultarUltimo
 … es decir, cada operación de la pila esconde dentro
 Las operaciones de la Lista Contigua
MAX_ELEM
Tope = -1
Tope =
MAX_ELEM-1
Tope = 0
Y LAS OPERACIONES?
 Pila_Crear
 Recibe una pila y la devuelve vacia
 Pila_EstaVacia
 Una pila esta vacia, cuando su tope
es menor que el fondo de la pila
 ¿Cómo serian el resto de operaciones no basicas?
bool Pila_EstaVacia(Pila s){
return(LCont_EstaVacia(s));
}
void Pila_Inicializar(Pila *s, int max)
{
LCont_Crear(s,max);
}
OPERACIONES BASICAS DE
LA PILA
 Pop
 Remueve el elemento tope de la pila, y
lo devuelve.
 Recuerde, el tope cambia
 Si la pila esta vacia, no se puede sacar
nada
 Error, y devuelve valor invalido
Generico Pila_Pop(Pila *s){
return(LCont_SacaNodoFinal(s));
}
void Pila_Push(Pila *s, Generico G){
LCont_InsertarNodoFin(s,G);
}
 Push
 Inserta un elemento en la pila, cuando
se puede
 Si la pila esta llena, no se puede
insertar
 Error
 Este elemento es el nuevo tope
 El tope aumenta
IMPLEMENTACION
DINAMICA
 Una pila, o una cola, las dos son Listas realmente
 Listas en las cuales las operaciones en Insertar y Remover estan
limitadas
 Una pila, se implemente exactamente igual que una Lista
 Al hacer Pop, es SacarNodoFinal
 Al hacer Push, es InsertarNodoFinal
typedef LSE Pila;
EJERCICIO EN CLASE
 Las pilas se usan cuando para
 Recuperar un conjunto de elementos en orden inverso a como
se introdujeron
 Un programa debe
 Leer una secuencia de elementos enteros
 Luego mostrarlos en orden inverso al ingresado
 Ejemplo:
 Si se ingresa: 1, 3, 5, 7
 Se mostrara: 7, 5, 3, 1
ANALISIS
 Cada elemento ingresado puede ser “metido” en la pila
 Ejemplo:
1
3
5
7
1
3
5
1
3
1
7 5 3 1
 Una vez llenada la pila,
 Solo hay que “sacar”,
elemento tras elemento
 Hasta que la pila quede
vacia
SOLUCION
Begin{
Pila S;
Generico dato;
InicializarPila(S);
while(TRUE){
write(“Ingrese elemento:”);
read(dato)
if(dato == centinela) break;
Push(S,dato);
}
while(!EstaVacia(S)){
write(Pop(s));
}
}
UN APLICACIÓN MAS
PRACTICA
 El compilador siempre sabe cuando se ha escrito un
parentesis, o una llave de mas
 ¿Como lo hace?
 Con el uso de pilas, expresiones escritas:
 (a+b)) Mal
 ((a+b) * c / 4*g-h) OK
 Se puede reconocer los parentesis que no coinciden
 ¿Como lograr esta aplicación de la pila?
ANALISIS DEL PROBLEMA
 Cuando los parentesis coincicen:
 Al final de la expresion
 Total parentesis izq = Total parentesis der y
 En todo momento, en cualquier punto de la expresion
 Cada parentesis der. esta precedido de uno izq
 Acum. parentesis der. siempre es <= que Acum. Parentesis izq
 Por ejemplo:
7 - ((X* ((X+Y)/(J-3)) + Y) / (4-2.5))
(A+B)) + 3 Al final de la
expresion:
Total ( = 1
Total ) = 2
En este punto de la expresion, ya se sabe
que es incorrecta
Acum ( = 1
Acum ) = 2
No se cumple la regla
PRIMER ENFOQUE
 Podemos llevar un conteo de
parentesis
 Este deberia llevar totales de ) y
de (
 Acum. Parentesis Izq - Acum.
Parentesis Der
 Este valor siempre debera ser
positivo
 Si en algun momento, al revisar
la expresion, el conteo de
parentesis es negativo:
 BINGO, hay un error
valida = true;
while(no hayamos revisado toda la
expresion)
{
if (elemento_actual == ‘(‘)
Total_der++;
else if(elemento_actual == ‘)’)
Total_izq++;
if(Total_der > Total_izq){
valida = false;
break;
}
}
if (Total_der != Total_izq)
valida = false;
UN ENFOQUE MAS NATURAL
 Otra forma, es la “forma natural”
 Cuando revisamos una expresion de este tipo:
 Revisamos los parentesis de la derecha, y buscamos sin tienen “match” en la izquierda
 Para seguir este enfoque podriamos:
 “Recordar” los parentesis de la izquierda ( a medida que aparecen:
 El primero en aparecer, sera el ultimo en ser “recordado”
 El ultimo en aparecer, sera el primero en ser “recordado”
La Pila se utiliza
justamente para
“recordar” de la forma
abajo indicada
Pop el
parentesis )
encontrado
7 - ((X* ((X+Y)/(J-3)) + Y) / (4-2.5))
 Asi, cuando aparece un )
 El primer ( recordado, debe ser su “match”
 En ese momento, este primero recordado, ya puede ser “olvidado”
 Al llegar al final de la expresion, ningun ( deberia ser “recordado”
APLICANDO PILAS
 Veamos, revisemos justo la expresion anterior
Todos los ),
encontraron su (
7 - ( ( X *( ( X+Y) / ( J- 3) ) +Y) / ( 4- 2) )
(
(
(
(
Y AHORA, EL ALGORITMO
Pila S; /*Se declara una pila s, para almacenar los ( */
Pila_Inicializar(&S);
while(no hayamos leido toda la cadena)
{
//tomar el siguiente simbolo de la expresion
if(simbolo = ‘(‘) /*Almacenarlo*/
Pila_Push(&S,simbolo);
if(simbolo = ‘)’){ /*Buscar match*/
if(Pila_EstaVacia(S)) { /*No hubo match!!*/
return(FALSE)
Pila_Pop(&s);
}
}
if(Pila_EstaVacia(s)) /*Algun simbolo se quedo dentro,
porque no hubo match*/
return TRUE;
Else
return FALSE;

Más contenido relacionado

La actualidad más candente

Estructura de datos I pilas
Estructura de datos I pilasEstructura de datos I pilas
Estructura de datos I pilas
geova666
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
Jose R. Trejo
 
Estructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colasEstructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colasElias Peña
 
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)Eli Diaz
 
Pilas
PilasPilas
Ejercicios pilas y_colas
Ejercicios pilas y_colasEjercicios pilas y_colas
Ejercicios pilas y_colaskelvinst
 
Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10
Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10
Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10chrisflores001
 
Listas enlazadas
Listas enlazadasListas enlazadas
Listas enlazadasguestbd36f7
 
Codigo para implementar pilas en java
Codigo para implementar pilas en javaCodigo para implementar pilas en java
Codigo para implementar pilas en java
Teresa Freire
 
Estructura de datos. listas, pilas y colas
Estructura de datos. listas, pilas y colasEstructura de datos. listas, pilas y colas
Estructura de datos. listas, pilas y colas
IARINAIA
 
10. aplicaciones de las pilas
10. aplicaciones de las pilas10. aplicaciones de las pilas
10. aplicaciones de las pilasAndreita Enriquez
 
Apuntadores y listas
Apuntadores y listasApuntadores y listas
Apuntadores y listas
Marialix Quintero
 
Diapositiva de l estructura de datos
Diapositiva de l estructura de datosDiapositiva de l estructura de datos
Diapositiva de l estructura de datosmariajuly
 

La actualidad más candente (19)

Estructura de datos I pilas
Estructura de datos I pilasEstructura de datos I pilas
Estructura de datos I pilas
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Estructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colasEstructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colas
 
Pilas Colas
Pilas ColasPilas Colas
Pilas Colas
 
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
 
Pilas
PilasPilas
Pilas
 
Ejercicios pilas y_colas
Ejercicios pilas y_colasEjercicios pilas y_colas
Ejercicios pilas y_colas
 
Estructura datos pilas y colas
Estructura datos pilas y colasEstructura datos pilas y colas
Estructura datos pilas y colas
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10
Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10
Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10
 
Listas enlazadas
Listas enlazadasListas enlazadas
Listas enlazadas
 
Codigo para implementar pilas en java
Codigo para implementar pilas en javaCodigo para implementar pilas en java
Codigo para implementar pilas en java
 
Estructura de Datos (LISTAS, COLAS, PILAS)
Estructura de Datos (LISTAS, COLAS, PILAS)Estructura de Datos (LISTAS, COLAS, PILAS)
Estructura de Datos (LISTAS, COLAS, PILAS)
 
Estructura de datos. listas, pilas y colas
Estructura de datos. listas, pilas y colasEstructura de datos. listas, pilas y colas
Estructura de datos. listas, pilas y colas
 
10. aplicaciones de las pilas
10. aplicaciones de las pilas10. aplicaciones de las pilas
10. aplicaciones de las pilas
 
Pilas y colas
Pilas y colasPilas y colas
Pilas y colas
 
Apuntadores y listas
Apuntadores y listasApuntadores y listas
Apuntadores y listas
 
Pilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datosPilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datos
 
Diapositiva de l estructura de datos
Diapositiva de l estructura de datosDiapositiva de l estructura de datos
Diapositiva de l estructura de datos
 

Similar a PILAS

Pilas Dylan Medina.pdf
Pilas Dylan Medina.pdfPilas Dylan Medina.pdf
Pilas Dylan Medina.pdf
DylanMedina4
 
DECLARACIÓN DE PILAS.pdf
DECLARACIÓN DE PILAS.pdfDECLARACIÓN DE PILAS.pdf
DECLARACIÓN DE PILAS.pdf
michaelsilva2k20
 
Pilas ALAN MENDEZ.pdf
Pilas ALAN MENDEZ.pdfPilas ALAN MENDEZ.pdf
Pilas ALAN MENDEZ.pdf
Gabriel Mendez
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
charlezgt
 
Curso-PROPE-PyED-5-Pilas-Colas-programacion
Curso-PROPE-PyED-5-Pilas-Colas-programacionCurso-PROPE-PyED-5-Pilas-Colas-programacion
Curso-PROPE-PyED-5-Pilas-Colas-programacion
LUISFERNANDOMORENOSO2
 
Estructuradatospilasycolas 121106170754-phpapp02
Estructuradatospilasycolas 121106170754-phpapp02Estructuradatospilasycolas 121106170754-phpapp02
Estructuradatospilasycolas 121106170754-phpapp02
Z Karina Hernandez A
 
S6-EDD-3.2 Pilas y colas
S6-EDD-3.2 Pilas y colasS6-EDD-3.2 Pilas y colas
S6-EDD-3.2 Pilas y colas
Luis Fernando Aguas Bucheli
 
Funcionamiento de un pila2
Funcionamiento de un pila2Funcionamiento de un pila2
Funcionamiento de un pila2jefer
 
Funcionamiento de un pila2
Funcionamiento de un pila2Funcionamiento de un pila2
Funcionamiento de un pila2jefer
 
Ejercicios evaluados i. shearly achji y ricardo ros. estructuras de datos i. ...
Ejercicios evaluados i. shearly achji y ricardo ros. estructuras de datos i. ...Ejercicios evaluados i. shearly achji y ricardo ros. estructuras de datos i. ...
Ejercicios evaluados i. shearly achji y ricardo ros. estructuras de datos i. ...Ricardo Ros
 
Pilas Struct
 Pilas Struct Pilas Struct
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colasElbery
 
Pilas
PilasPilas
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrb
viela6
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrb
viela6
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrb
viela6
 

Similar a PILAS (20)

08 pilas1 t2018
08 pilas1 t201808 pilas1 t2018
08 pilas1 t2018
 
PILAS
PILASPILAS
PILAS
 
7
77
7
 
Pilas Dylan Medina.pdf
Pilas Dylan Medina.pdfPilas Dylan Medina.pdf
Pilas Dylan Medina.pdf
 
DECLARACIÓN DE PILAS.pdf
DECLARACIÓN DE PILAS.pdfDECLARACIÓN DE PILAS.pdf
DECLARACIÓN DE PILAS.pdf
 
Pilas ALAN MENDEZ.pdf
Pilas ALAN MENDEZ.pdfPilas ALAN MENDEZ.pdf
Pilas ALAN MENDEZ.pdf
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
 
Curso-PROPE-PyED-5-Pilas-Colas-programacion
Curso-PROPE-PyED-5-Pilas-Colas-programacionCurso-PROPE-PyED-5-Pilas-Colas-programacion
Curso-PROPE-PyED-5-Pilas-Colas-programacion
 
Estructuradatospilasycolas 121106170754-phpapp02
Estructuradatospilasycolas 121106170754-phpapp02Estructuradatospilasycolas 121106170754-phpapp02
Estructuradatospilasycolas 121106170754-phpapp02
 
Estructura de datos pilas y colas
Estructura de datos pilas y colasEstructura de datos pilas y colas
Estructura de datos pilas y colas
 
S6-EDD-3.2 Pilas y colas
S6-EDD-3.2 Pilas y colasS6-EDD-3.2 Pilas y colas
S6-EDD-3.2 Pilas y colas
 
Funcionamiento de un pila2
Funcionamiento de un pila2Funcionamiento de un pila2
Funcionamiento de un pila2
 
Funcionamiento de un pila2
Funcionamiento de un pila2Funcionamiento de un pila2
Funcionamiento de un pila2
 
Ejercicios evaluados i. shearly achji y ricardo ros. estructuras de datos i. ...
Ejercicios evaluados i. shearly achji y ricardo ros. estructuras de datos i. ...Ejercicios evaluados i. shearly achji y ricardo ros. estructuras de datos i. ...
Ejercicios evaluados i. shearly achji y ricardo ros. estructuras de datos i. ...
 
Pilas Struct
 Pilas Struct Pilas Struct
Pilas Struct
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Pilas
PilasPilas
Pilas
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrb
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrb
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrb
 

Más de Gustavo Salazar Loor

Max Plus Compilar vhdl
Max Plus Compilar vhdlMax Plus Compilar vhdl
Max Plus Compilar vhdl
Gustavo Salazar Loor
 
ARBOLES MULTICAMINOS
ARBOLES MULTICAMINOSARBOLES MULTICAMINOS
ARBOLES MULTICAMINOS
Gustavo Salazar Loor
 
LISTAS ESPECIALES
LISTAS ESPECIALESLISTAS ESPECIALES
LISTAS ESPECIALES
Gustavo Salazar Loor
 
CODIGO DE HUFFMAN
CODIGO DE HUFFMANCODIGO DE HUFFMAN
CODIGO DE HUFFMAN
Gustavo Salazar Loor
 
RESPIRACION Y FERMENTACION
RESPIRACION Y FERMENTACIONRESPIRACION Y FERMENTACION
RESPIRACION Y FERMENTACION
Gustavo Salazar Loor
 

Más de Gustavo Salazar Loor (20)

Max Plus Compilar vhdl
Max Plus Compilar vhdlMax Plus Compilar vhdl
Max Plus Compilar vhdl
 
ECUADOR
ECUADORECUADOR
ECUADOR
 
Electronica I Clase07
Electronica I Clase07Electronica I Clase07
Electronica I Clase07
 
Electronica I Clase07
Electronica I Clase07Electronica I Clase07
Electronica I Clase07
 
Electronica I Clase06
Electronica I Clase06Electronica I Clase06
Electronica I Clase06
 
Electronica I Clase05
Electronica I Clase05Electronica I Clase05
Electronica I Clase05
 
Electronica I Clase04
Electronica I Clase04Electronica I Clase04
Electronica I Clase04
 
Electronica I Clase03
Electronica I Clase03Electronica I Clase03
Electronica I Clase03
 
Electronica I Clase02
Electronica I Clase02Electronica I Clase02
Electronica I Clase02
 
Electronica I Clase01
Electronica I Clase01Electronica I Clase01
Electronica I Clase01
 
TDA
TDATDA
TDA
 
ARBOLES MULTICAMINOS
ARBOLES MULTICAMINOSARBOLES MULTICAMINOS
ARBOLES MULTICAMINOS
 
LISTAS ESPECIALES
LISTAS ESPECIALESLISTAS ESPECIALES
LISTAS ESPECIALES
 
LISTAS
LISTASLISTAS
LISTAS
 
GRAFOS
GRAFOSGRAFOS
GRAFOS
 
HEAPS
HEAPSHEAPS
HEAPS
 
ARBOLES
ARBOLESARBOLES
ARBOLES
 
COLAS
COLASCOLAS
COLAS
 
CODIGO DE HUFFMAN
CODIGO DE HUFFMANCODIGO DE HUFFMAN
CODIGO DE HUFFMAN
 
RESPIRACION Y FERMENTACION
RESPIRACION Y FERMENTACIONRESPIRACION Y FERMENTACION
RESPIRACION Y FERMENTACION
 

Último

Fase 1, Lenguaje algebraico y pensamiento funcional
Fase 1, Lenguaje algebraico y pensamiento funcionalFase 1, Lenguaje algebraico y pensamiento funcional
Fase 1, Lenguaje algebraico y pensamiento funcional
YasneidyGonzalez
 
Asistencia Tecnica Cultura Escolar Inclusiva Ccesa007.pdf
Asistencia Tecnica Cultura Escolar Inclusiva Ccesa007.pdfAsistencia Tecnica Cultura Escolar Inclusiva Ccesa007.pdf
Asistencia Tecnica Cultura Escolar Inclusiva Ccesa007.pdf
Demetrio Ccesa Rayme
 
Semana 10-TSM-del 27 al 31 de mayo 2024.pptx
Semana 10-TSM-del 27 al 31 de mayo 2024.pptxSemana 10-TSM-del 27 al 31 de mayo 2024.pptx
Semana 10-TSM-del 27 al 31 de mayo 2024.pptx
LorenaCovarrubias12
 
c3.hu3.p3.p2.Superioridad e inferioridad en la sociedad.pptx
c3.hu3.p3.p2.Superioridad e inferioridad en la sociedad.pptxc3.hu3.p3.p2.Superioridad e inferioridad en la sociedad.pptx
c3.hu3.p3.p2.Superioridad e inferioridad en la sociedad.pptx
Martín Ramírez
 
Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
Monseespinoza6
 
Libro infantil sapo y sepo un año entero pdf
Libro infantil sapo y sepo un año entero pdfLibro infantil sapo y sepo un año entero pdf
Libro infantil sapo y sepo un año entero pdf
danitarb
 
CAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCION
CAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCIONCAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCION
CAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCION
MasielPMP
 
Junio 2024 Fotocopiables Ediba actividades
Junio 2024 Fotocopiables Ediba actividadesJunio 2024 Fotocopiables Ediba actividades
Junio 2024 Fotocopiables Ediba actividades
cintiat3400
 
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIACONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
BetzabePecheSalcedo1
 
Introducción a la ciencia de datos con power BI
Introducción a la ciencia de datos con power BIIntroducción a la ciencia de datos con power BI
Introducción a la ciencia de datos con power BI
arleyo2006
 
Conocemos la ermita de Ntra. Sra. del Arrabal
Conocemos la ermita de Ntra. Sra. del ArrabalConocemos la ermita de Ntra. Sra. del Arrabal
Conocemos la ermita de Ntra. Sra. del Arrabal
Profes de Relideleón Apellidos
 
Mapa_Conceptual de los fundamentos de la evaluación educativa
Mapa_Conceptual de los fundamentos de la evaluación educativaMapa_Conceptual de los fundamentos de la evaluación educativa
Mapa_Conceptual de los fundamentos de la evaluación educativa
TatianaVanessaAltami
 
Portafolio de servicios Centro de Educación Continua EPN
Portafolio de servicios Centro de Educación Continua EPNPortafolio de servicios Centro de Educación Continua EPN
Portafolio de servicios Centro de Educación Continua EPN
jmorales40
 
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
20minutos
 
HABILIDADES MOTRICES BASICAS Y ESPECIFICAS.pdf
HABILIDADES MOTRICES BASICAS Y ESPECIFICAS.pdfHABILIDADES MOTRICES BASICAS Y ESPECIFICAS.pdf
HABILIDADES MOTRICES BASICAS Y ESPECIFICAS.pdf
DIANADIAZSILVA1
 
Educar por Competencias GS2 Ccesa007.pdf
Educar por Competencias GS2 Ccesa007.pdfEducar por Competencias GS2 Ccesa007.pdf
Educar por Competencias GS2 Ccesa007.pdf
Demetrio Ccesa Rayme
 
Proceso de admisiones en escuelas infantiles de Pamplona
Proceso de admisiones en escuelas infantiles de PamplonaProceso de admisiones en escuelas infantiles de Pamplona
Proceso de admisiones en escuelas infantiles de Pamplona
Edurne Navarro Bueno
 
El fundamento del gobierno de Dios. Lec. 09. docx
El fundamento del gobierno de Dios. Lec. 09. docxEl fundamento del gobierno de Dios. Lec. 09. docx
El fundamento del gobierno de Dios. Lec. 09. docx
Alejandrino Halire Ccahuana
 
Semana #10-PM3 del 27 al 31 de mayo.pptx
Semana #10-PM3 del 27 al 31 de mayo.pptxSemana #10-PM3 del 27 al 31 de mayo.pptx
Semana #10-PM3 del 27 al 31 de mayo.pptx
LorenaCovarrubias12
 
El Liberalismo económico en la sociedad y en el mundo
El Liberalismo económico en la sociedad y en el mundoEl Liberalismo económico en la sociedad y en el mundo
El Liberalismo económico en la sociedad y en el mundo
SandraBenitez52
 

Último (20)

Fase 1, Lenguaje algebraico y pensamiento funcional
Fase 1, Lenguaje algebraico y pensamiento funcionalFase 1, Lenguaje algebraico y pensamiento funcional
Fase 1, Lenguaje algebraico y pensamiento funcional
 
Asistencia Tecnica Cultura Escolar Inclusiva Ccesa007.pdf
Asistencia Tecnica Cultura Escolar Inclusiva Ccesa007.pdfAsistencia Tecnica Cultura Escolar Inclusiva Ccesa007.pdf
Asistencia Tecnica Cultura Escolar Inclusiva Ccesa007.pdf
 
Semana 10-TSM-del 27 al 31 de mayo 2024.pptx
Semana 10-TSM-del 27 al 31 de mayo 2024.pptxSemana 10-TSM-del 27 al 31 de mayo 2024.pptx
Semana 10-TSM-del 27 al 31 de mayo 2024.pptx
 
c3.hu3.p3.p2.Superioridad e inferioridad en la sociedad.pptx
c3.hu3.p3.p2.Superioridad e inferioridad en la sociedad.pptxc3.hu3.p3.p2.Superioridad e inferioridad en la sociedad.pptx
c3.hu3.p3.p2.Superioridad e inferioridad en la sociedad.pptx
 
Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
 
Libro infantil sapo y sepo un año entero pdf
Libro infantil sapo y sepo un año entero pdfLibro infantil sapo y sepo un año entero pdf
Libro infantil sapo y sepo un año entero pdf
 
CAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCION
CAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCIONCAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCION
CAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCION
 
Junio 2024 Fotocopiables Ediba actividades
Junio 2024 Fotocopiables Ediba actividadesJunio 2024 Fotocopiables Ediba actividades
Junio 2024 Fotocopiables Ediba actividades
 
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIACONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
 
Introducción a la ciencia de datos con power BI
Introducción a la ciencia de datos con power BIIntroducción a la ciencia de datos con power BI
Introducción a la ciencia de datos con power BI
 
Conocemos la ermita de Ntra. Sra. del Arrabal
Conocemos la ermita de Ntra. Sra. del ArrabalConocemos la ermita de Ntra. Sra. del Arrabal
Conocemos la ermita de Ntra. Sra. del Arrabal
 
Mapa_Conceptual de los fundamentos de la evaluación educativa
Mapa_Conceptual de los fundamentos de la evaluación educativaMapa_Conceptual de los fundamentos de la evaluación educativa
Mapa_Conceptual de los fundamentos de la evaluación educativa
 
Portafolio de servicios Centro de Educación Continua EPN
Portafolio de servicios Centro de Educación Continua EPNPortafolio de servicios Centro de Educación Continua EPN
Portafolio de servicios Centro de Educación Continua EPN
 
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
 
HABILIDADES MOTRICES BASICAS Y ESPECIFICAS.pdf
HABILIDADES MOTRICES BASICAS Y ESPECIFICAS.pdfHABILIDADES MOTRICES BASICAS Y ESPECIFICAS.pdf
HABILIDADES MOTRICES BASICAS Y ESPECIFICAS.pdf
 
Educar por Competencias GS2 Ccesa007.pdf
Educar por Competencias GS2 Ccesa007.pdfEducar por Competencias GS2 Ccesa007.pdf
Educar por Competencias GS2 Ccesa007.pdf
 
Proceso de admisiones en escuelas infantiles de Pamplona
Proceso de admisiones en escuelas infantiles de PamplonaProceso de admisiones en escuelas infantiles de Pamplona
Proceso de admisiones en escuelas infantiles de Pamplona
 
El fundamento del gobierno de Dios. Lec. 09. docx
El fundamento del gobierno de Dios. Lec. 09. docxEl fundamento del gobierno de Dios. Lec. 09. docx
El fundamento del gobierno de Dios. Lec. 09. docx
 
Semana #10-PM3 del 27 al 31 de mayo.pptx
Semana #10-PM3 del 27 al 31 de mayo.pptxSemana #10-PM3 del 27 al 31 de mayo.pptx
Semana #10-PM3 del 27 al 31 de mayo.pptx
 
El Liberalismo económico en la sociedad y en el mundo
El Liberalismo económico en la sociedad y en el mundoEl Liberalismo económico en la sociedad y en el mundo
El Liberalismo económico en la sociedad y en el mundo
 

PILAS

  • 2. LA PILA: UN TDA SIMPLE  Uno de los conceptos mas utiles en computacion es la pila o stack  Es un conjunto de elementos, en la que:  Los elementos se añaden y se remueven por un solo extremo  Este extremo es llamado “tope” de la pila La ultima en llegar, sera la primera en salir: LAST IN, FIRST OUT LIFO  Ejemplo:  Cuando un empleado se va de vacaciones, le llega correo a su escritorio.  Las cartas se van “apilando”.  Al regresar de vacaciones, la ultima carga en llegar, sera la primera que revisara  Al terminar de revisarla, la nueva carta del tope de la pila habra cambiado  Del “pilo” de cartas, la mas nueva que queda, sera la siguiente en ser revisada
  • 3. TDA PILA: DEFINICION  Dada una Pila llamada S  ¿Qué datos serian importantes conocer sobre la Pila?  ¿Y que operaciones podriamos efectuar a la misma? Push(s,elemento1) Elemento 1 Tope o Cima Push(s,elemento2) Elemento 2 Push(S,elemento3) Elemento 3 Pop(S) EstaVacia?NoSi  Al revisar c/carta, se la “sacaba” de la pila  elemento = pop(s)  La operación pop remueve el elemento Tope de la pila y lo retorna. La pila disminuye su tamaño  Usemos el ejemplo del correo:  Al acumularse,  Cada carta(elemento), era “metida” a la pila: push(s,elemento)  La operación push aumenta un elemento a la pila, y esta aumenta en su tamaño
  • 4. PILA: OPERACIONES EliminarPila(Pila) Efecto: recibe una pila y la libera completamente EstaVacia(Pila) retorna -> Boolean Efecto: Devuelve true si esta vacia y false en caso contrario Push(pila, elemento) Efecto: Toma la pila y aumenta su tamaño, poniendo el elemento en la cima de la pila Pop(Pila) retorna -> elemento Efecto: Recibe la pila, remueve el elemento tope y lo retorna Excepcion: Si la pila esta vacia, produce error TopePila(Pila) retorna -> elemento Efecto: Devuelve el elemento cima de la pila Excepcion: Si la pila esta vacia produce error InicializarPila(Pila) Efecto: recibe una pila y la inicializa para su trabajo normal
  • 5. TDA PILA: DEFINICION FORMAL <pila> ::= <tope> + {<nodo>} <tope> ::= <enlace> <enlace> ::= (<<ReferenciaNodo>> | NULL) <nodo> ::= <contenido> + <enlace> <contenido> ::= <<dato>>{<<dato>>}  En conclusion:  La pila es un conjunto de elementos  De los cuales solo conozco y puedo ver el TOPE  Cada elemento en la pila  Puede contener informacion de cualquier tipo, es decir, es generico
  • 6. OTRAS OPERACIONES  Al remover el ultimo elemento de una pila esta queda vacia  Una vez vacia, no se pueden “sacar” mas elementos de la pila  Antes de sacar un elemento de la pila  Debemos saber si la pila Esta Vacia?: EstaVacia(s)  El tope de la pila siempre esta cambiando  Deberiamos poder “revisar” el elemento tope de la pila: TopePila(s)  Si la pila esta vacia, no debe existir un valor tope  El tratar de remover elementos o acceder a elementos de una pila vacia se llama  SUBDESBORDAMIENTO de la pila
  • 7. TDA PILA: IMPLEMENTACION  Hay varias formas, analicemos la mas sencilla  La Pila es una Lista… pero limitada  En la lista los nuevos nodos se pueden insertar y remover  Al/Del Inicio, al final, dada una posicion, etc.  En la Pila los elementos solo se pueden insertar al final de la Pila  Y solo se pueden remover del Final de la Pila  Las impelmentaciones de la Lista Simplemente Enlazada  Estatica o Dinamica  Nos sirven perfectamente para la Pila
  • 8. IMPLEMENTACION ESTATICA  La Pila seria una Lista Contigua  typededef LCont Pila;  Y solo deberemos implementar las operaciones de  Push, llamando a InsertarNodoFinal  Pop, llamando a SacarNodoFinal  TopePila, llamando a ConsultarUltimo  … es decir, cada operación de la pila esconde dentro  Las operaciones de la Lista Contigua MAX_ELEM Tope = -1 Tope = MAX_ELEM-1 Tope = 0
  • 9. Y LAS OPERACIONES?  Pila_Crear  Recibe una pila y la devuelve vacia  Pila_EstaVacia  Una pila esta vacia, cuando su tope es menor que el fondo de la pila  ¿Cómo serian el resto de operaciones no basicas? bool Pila_EstaVacia(Pila s){ return(LCont_EstaVacia(s)); } void Pila_Inicializar(Pila *s, int max) { LCont_Crear(s,max); }
  • 10. OPERACIONES BASICAS DE LA PILA  Pop  Remueve el elemento tope de la pila, y lo devuelve.  Recuerde, el tope cambia  Si la pila esta vacia, no se puede sacar nada  Error, y devuelve valor invalido Generico Pila_Pop(Pila *s){ return(LCont_SacaNodoFinal(s)); } void Pila_Push(Pila *s, Generico G){ LCont_InsertarNodoFin(s,G); }  Push  Inserta un elemento en la pila, cuando se puede  Si la pila esta llena, no se puede insertar  Error  Este elemento es el nuevo tope  El tope aumenta
  • 11. IMPLEMENTACION DINAMICA  Una pila, o una cola, las dos son Listas realmente  Listas en las cuales las operaciones en Insertar y Remover estan limitadas  Una pila, se implemente exactamente igual que una Lista  Al hacer Pop, es SacarNodoFinal  Al hacer Push, es InsertarNodoFinal typedef LSE Pila;
  • 12. EJERCICIO EN CLASE  Las pilas se usan cuando para  Recuperar un conjunto de elementos en orden inverso a como se introdujeron  Un programa debe  Leer una secuencia de elementos enteros  Luego mostrarlos en orden inverso al ingresado  Ejemplo:  Si se ingresa: 1, 3, 5, 7  Se mostrara: 7, 5, 3, 1
  • 13. ANALISIS  Cada elemento ingresado puede ser “metido” en la pila  Ejemplo: 1 3 5 7 1 3 5 1 3 1 7 5 3 1  Una vez llenada la pila,  Solo hay que “sacar”, elemento tras elemento  Hasta que la pila quede vacia
  • 14. SOLUCION Begin{ Pila S; Generico dato; InicializarPila(S); while(TRUE){ write(“Ingrese elemento:”); read(dato) if(dato == centinela) break; Push(S,dato); } while(!EstaVacia(S)){ write(Pop(s)); } }
  • 15. UN APLICACIÓN MAS PRACTICA  El compilador siempre sabe cuando se ha escrito un parentesis, o una llave de mas  ¿Como lo hace?  Con el uso de pilas, expresiones escritas:  (a+b)) Mal  ((a+b) * c / 4*g-h) OK  Se puede reconocer los parentesis que no coinciden  ¿Como lograr esta aplicación de la pila?
  • 16. ANALISIS DEL PROBLEMA  Cuando los parentesis coincicen:  Al final de la expresion  Total parentesis izq = Total parentesis der y  En todo momento, en cualquier punto de la expresion  Cada parentesis der. esta precedido de uno izq  Acum. parentesis der. siempre es <= que Acum. Parentesis izq  Por ejemplo: 7 - ((X* ((X+Y)/(J-3)) + Y) / (4-2.5)) (A+B)) + 3 Al final de la expresion: Total ( = 1 Total ) = 2 En este punto de la expresion, ya se sabe que es incorrecta Acum ( = 1 Acum ) = 2 No se cumple la regla
  • 17. PRIMER ENFOQUE  Podemos llevar un conteo de parentesis  Este deberia llevar totales de ) y de (  Acum. Parentesis Izq - Acum. Parentesis Der  Este valor siempre debera ser positivo  Si en algun momento, al revisar la expresion, el conteo de parentesis es negativo:  BINGO, hay un error valida = true; while(no hayamos revisado toda la expresion) { if (elemento_actual == ‘(‘) Total_der++; else if(elemento_actual == ‘)’) Total_izq++; if(Total_der > Total_izq){ valida = false; break; } } if (Total_der != Total_izq) valida = false;
  • 18. UN ENFOQUE MAS NATURAL  Otra forma, es la “forma natural”  Cuando revisamos una expresion de este tipo:  Revisamos los parentesis de la derecha, y buscamos sin tienen “match” en la izquierda  Para seguir este enfoque podriamos:  “Recordar” los parentesis de la izquierda ( a medida que aparecen:  El primero en aparecer, sera el ultimo en ser “recordado”  El ultimo en aparecer, sera el primero en ser “recordado” La Pila se utiliza justamente para “recordar” de la forma abajo indicada Pop el parentesis ) encontrado 7 - ((X* ((X+Y)/(J-3)) + Y) / (4-2.5))  Asi, cuando aparece un )  El primer ( recordado, debe ser su “match”  En ese momento, este primero recordado, ya puede ser “olvidado”  Al llegar al final de la expresion, ningun ( deberia ser “recordado”
  • 19. APLICANDO PILAS  Veamos, revisemos justo la expresion anterior Todos los ), encontraron su ( 7 - ( ( X *( ( X+Y) / ( J- 3) ) +Y) / ( 4- 2) ) ( ( ( (
  • 20. Y AHORA, EL ALGORITMO Pila S; /*Se declara una pila s, para almacenar los ( */ Pila_Inicializar(&S); while(no hayamos leido toda la cadena) { //tomar el siguiente simbolo de la expresion if(simbolo = ‘(‘) /*Almacenarlo*/ Pila_Push(&S,simbolo); if(simbolo = ‘)’){ /*Buscar match*/ if(Pila_EstaVacia(S)) { /*No hubo match!!*/ return(FALSE) Pila_Pop(&s); } } if(Pila_EstaVacia(s)) /*Algun simbolo se quedo dentro, porque no hubo match*/ return TRUE; Else return FALSE;