Download - Document7
![Page 1: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/1.jpg)
FUNCIONAMIENTO DE UN PILA
Integrantes: Jefferson Arcos
Oscar Ibarra
![Page 2: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/2.jpg)
Definición PILA
Una pila es una estructura de datos en la que la inserción y la extracción de elementos se realiza sólo por un extremo que se denomina cabeza. como consecuencia, los elementos de una pila serán eliminados en orden inverso al que se insertaron. es decir, el último elemento que se metió en la pila será el primero en salir de ella en ingle denominada (LIFO) Last lnput, First Output.
![Page 3: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/3.jpg)
Mecanismo de una PILA
Una pila tiene como principal mecanismo ciertas partes que conforman la pila las cuales son:
El tope La estructura de nodo PILA La variable aux La variable dato
![Page 4: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/4.jpg)
Función pila
NULL
sig.
dato
sig.
dato
sig.
dato
sig.
dato
inicio
El inicio tendrá la tarea de apuntar aun valor nulo para que el apuntador siguiente tendrá que apuntar al dato para ser ingresado y pueda continuar el mecanismo de una pila por lo cual cumplirá el concepto de último en entrar, primero en salir
![Page 5: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/5.jpg)
Operaciones de una pila
La operaciones que realiza una pila son formas por la cual cumple ciertas funciones para la operación de una pila la cuales son
Inicializar pila Insertar elemento de la pila Eliminar elemento de la pila Recorrer elemento de la pila
![Page 6: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/6.jpg)
Función iniciar PILA Esta función permite iniciar la pila ya que se
encuentra la estructura nodo pila la cual esta compuesta por un dato tipo entero y un puntero siguiente por lo tanto la función declarada como
Función iniciar pila(nodo **tope )
El tope estará apuntando a un valor nulo (NULL)
Al ingresar una dato el tope estará apuntando a un puntero denominado dato ,siguiente
![Page 7: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/7.jpg)
Función insertar o apilar Elemento
Al insertar una elemento en la pila el mecanismo de insertar será de la siguiente forma:
Función apilar (Estructura nodo **tope, Entero dat) Inicio
Estructura nodo *aux aux=new nodo Si (aux=NULL) Entonces
Escribir "Memoria Insuficiente" Fin aux->dato=dat
aux->sig=*tope *tope=aux
Fin
![Page 8: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/8.jpg)
Función eliminar o desapilar un elemento
Es función permite eliminar un elemento de una pila y su función será de la forma:
Función desapilar(Estructura nodo **tope)
InicioEstructura nodo *aux Si (vacía(&(*tope))) Entonces
Escribir " Pila Vacía." Sino
aux=*tope Escribir " Elemento eliminado: “, (*tope)->dato *tope=(*tope)->sig delete aux
FinFin
![Page 9: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/9.jpg)
Función recorrer elementos de una pila
Esta función permite que saber los elemento que están almacenado en la pila y además permite saber le espacio de memoria dinámica, y su forma es de la siguiente manera:
InicioEstructura nodo *aux Si (vacia(&(*tope))) Entonces
Escribir "Pila Vacía. " sino
aux=*tope Mientras(aux!=NULL)
Escribir " Dato: ", aux->dato aux=aux->sig
Fin MientrasFin
Fin
![Page 10: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/10.jpg)
Nuevas funciones para una pila
![Page 11: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/11.jpg)
Funcion contar elementos
Esta función permite contar todos los elemento de una pila lo cual se diferencia de la función recorrer por lo que se implementa un contador en la cual se implemento la siguiente función
![Page 12: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/12.jpg)
Funcion Contar
Funcion contar. Nombre: Contar Utilidad: Cuenta los elmentos que hay en una pila. Pre: p={} p={e1,e2,e3...en} Post: Pila vacia Numero de elmentos = e
![Page 13: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/13.jpg)
Funcion Contar
Codificacion void contar(struct nodoPila **tope) {struct nodoPila *aux; int cont=0; if(*tope==NULL) {cout<<"\nPila Vacia. "; } else {aux=*tope; while(aux!=NULL) {aux=aux->sig; cont++; } } cout<<”\nEl numero de elmentos en la pila es:”<<cont; getch();}
![Page 14: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/14.jpg)
Funcion Contar
73
Tope
5
Aux
![Page 15: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/15.jpg)
Funcion Contar
73
Tope
5
Aux
Codificacion void contar(struct nodoPila **tope) {struct nodoPila *aux; int cont=0; if(*tope==NULL) {cout<<"\nPila Vacia. "; } else {aux=*tope; while(aux!=NULL) {aux=aux->sig; cont++; } } cout<<”\nEl numero de elmentos en la pila es:”<<cont; getch();}
![Page 16: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/16.jpg)
Funcion Contar
73
Tope
5
Aux
Codificacion void contar(struct nodoPila **tope) {struct nodoPila *aux; int cont=0; if(*tope==NULL) {cout<<"\nPila Vacia. "; } else {aux=*tope; while(aux!=NULL) {aux=aux->sig; cont++; } } cout<<”\nEl numero de elmentos en la pila es:”<<cont; getch();}
int cont=0
![Page 17: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/17.jpg)
Funcion Contar
73
Tope
5
Aux
Codificacion void contar(struct nodoPila **tope) {struct nodoPila *aux; int cont=0; if(*tope==NULL) {cout<<"\nPila Vacia. "; } else {aux=*tope; while(aux!=NULL) {aux=aux->sig; cont++; } } cout<<”\nEl numero de elmentos en la pila es:”<<cont; getch();}
Int cont=1
![Page 18: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/18.jpg)
Funcion Contar
73
Tope
5
Aux
Codificacion void contar(struct nodoPila **tope) {struct nodoPila *aux; int cont=0; if(*tope==NULL) {cout<<"\nPila Vacia. "; } else {aux=*tope; while(aux!=NULL) {aux=aux->sig; cont++; } } cout<<”\nEl numero de elmentos en la pila es:”<<cont; getch();}
Int cont=2
![Page 19: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/19.jpg)
Funcion Contar
73
Tope
5
Aux
Codificacion void contar(struct nodoPila **tope) {struct nodoPila *aux; int cont=0; if(*tope==NULL) {cout<<"\nPila Vacia. "; } else {aux=*tope; while(aux!=NULL) {aux=aux->sig; cont++; } } cout<<”\nEl numero de elmentos en la pila es:”<<cont; getch();}
Int cont=3
![Page 20: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/20.jpg)
Funcion Contar
73
Tope
5
Aux
Codificacion void contar(struct nodoPila **tope) {struct nodoPila *aux; int cont=0; if(*tope==NULL) {cout<<"\nPila Vacia. "; } else {aux=*tope; while(aux!=NULL) {aux=aux->sig; cont++; } } cout<<”\nEl numero de elmentos en la pila es:”<<cont; getch();}
Int cont=3
“El numero de elementos en la pila es: 3”
![Page 21: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/21.jpg)
Función promedio de los elementos en una pila
Esta función permite obtener un promedio de los elemento que puede ser de un tipo float o decimal para su funcionamiento tendrá como variantes el contador de elementos, una suma , una división que actuara como divisor el contador que almacenara los elementos y su forma de trabajo es de la siguiente manera
![Page 22: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/22.jpg)
Función promediar elementos en una pila
Función promediarNombre: promediar Utilidad: Hacer el promedio de los datos de una
pila. Pre: p={} p={e1,e2,e3...en} Post: Pila vacía El promedio de los datos es = e
![Page 23: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/23.jpg)
funcionamiento de promediar elementos en una pila
Codificacion.void promediar(struct nodoPila **tope){struct nodoPila *aux; int elem=0; float prom=0, sum=0; if(*tope==NULL) {cout<<"\nPila Vacia. "; } else {aux=*tope; while(aux!=NULL) {sum=sum+aux->dato; aux=aux->sig; elem++; } prom=(sum/elem); cout<<"\nEl promedio de los elementos es: <<prom; } getch();}
![Page 24: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/24.jpg)
Grafica de Promediar
7
Tope
float sum=0;
elem=0
![Page 25: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/25.jpg)
Grafica de Promediar
73
Tope
float sum=0;
elem=0
![Page 26: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/26.jpg)
Grafica de Promediar
73
Tope
5
elem=0 float sum=0;
![Page 27: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/27.jpg)
73
Tope
5
Codificacion.void promediar(struct nodoPila **tope){struct nodoPila *aux; int elem=0; float prom=0, sum=0; if(*tope==NULL) {cout<<"\nPila Vacia. "; } else {aux=*tope; while(aux!=NULL) {sum=sum+aux->dato; aux=aux->sig; elem++; } prom=(sum/elem); cout<<"\nEl promedio de los elementos es: <<prom; } getch();}
Aux
Grafica de Promediar
elem=0 float sum=0;
![Page 28: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/28.jpg)
Codificacion.void promediar(struct nodoPila **tope){struct nodoPila *aux; int elem=0; float prom=0, sum=0; if(*tope==NULL) {cout<<"\nPila Vacia. "; } else {aux=*tope; while(aux!=NULL) {sum=sum+aux->dato; aux=aux->sig; elem++; } prom=(sum/elem); cout<<"\nEl promedio de los elementos es: <<prom; } getch();}
73
Tope
5
Aux
Grafica de Promediar
elem=15 float sum=5;
![Page 29: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/29.jpg)
Codificacion.void promediar(struct nodoPila **tope){struct nodoPila *aux; int elem=0; float prom=0, sum=0; if(*tope==NULL) {cout<<"\nPila Vacia. "; } else {aux=*tope; while(aux!=NULL) {sum=sum+aux->dato; aux=aux->sig; elem++; } prom=(sum/elem); cout<<"\nEl promedio de los elementos es: <<prom; } getch();}
73
Tope
5
Aux
Grafica de Promediar
elem=25
3
float sum=8;
![Page 30: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/30.jpg)
Codificacion.void promediar(struct nodoPila **tope){struct nodoPila *aux; int elem=0; float prom=0, sum=0; if(*tope==NULL) {cout<<"\nPila Vacia. "; } else {aux=*tope; while(aux!=NULL) {sum=sum+aux->dato; aux=aux->sig; elem++; } prom=(sum/elem); cout<<"\nEl promedio de los elementos es: <<prom; } getch();}
73
Tope
5
Aux
Grafica de Promediar
elem=35
3
float sum=15;
7
![Page 31: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/31.jpg)
Codificacion.void promediar(struct nodoPila **tope){struct nodoPila *aux; int elem=0; float prom=0, sum=0; if(*tope==NULL) {cout<<"\nPila Vacia. "; } else {aux=*tope; while(aux!=NULL) {sum=sum+aux->dato; aux=aux->sig; elem++; } prom=(sum/elem); cout<<"\nEl promedio de los elementos es: <<prom; } getch();}
73
Tope
5
Aux
Grafica de Promediar
elem=35
3
float sum=15;
7
Prom
![Page 32: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/32.jpg)
Codificacion.void promediar(struct nodoPila **tope){struct nodoPila *aux; int elem=0; float prom=0, sum=0; if(*tope==NULL) {cout<<"\nPila Vacia. "; } else {aux=*tope; while(aux!=NULL) {sum=sum+aux->dato; aux=aux->sig; elem++; } prom=(sum/elem); cout<<"\nEl promedio de los elementos es: <<prom; } getch();}
73
Tope
5
Aux
Grafica de Promediar
elem=3float
sum=15;prom
![Page 33: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/33.jpg)
Codificacion.void promediar(struct nodoPila **tope){struct nodoPila *aux; int elem=0; float prom=0, sum=0; if(*tope==NULL) {cout<<"\nPila Vacia. "; } else {aux=*tope; while(aux!=NULL) {sum=sum+aux->dato; aux=aux->sig; elem++; } prom=(sum/elem); cout<<"\nEl promedio de los elementos es: <<prom; } getch();}
73
Tope
5
Aux
Grafica de Promediar
prom 5
“El promedio de los elementos es: 5”
![Page 34: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/34.jpg)
Grafica de promediar
31er elemento
![Page 35: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/35.jpg)
Grafica de promediar
1er elemento Var cont.3
![Page 36: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/36.jpg)
Grafica de promediar
1er elemento 1 Var cont.3
![Page 37: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/37.jpg)
Grafica de promediar
2º elemento
1 Var cont.3
5
![Page 38: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/38.jpg)
Grafica de promediar
2do elemento
1 Var cont.3
5 2
![Page 39: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/39.jpg)
Grafica de promediar
3er elemento
1 Var cont.3
5 2
7 3
![Page 40: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/40.jpg)
Grafica de promediar
4to elemento
1
elementos son 4
3
5 2
7 3
9 4
![Page 41: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/41.jpg)
Grafica de promediar
La suma de elementos según la apilacion
13
5 2
7 3
9 4La suma de elementos según la apilacion elementos
son 4 los cuales se van a dividir según
el contador
![Page 42: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/42.jpg)
Grafica de promediar
13
5 2
7 3
9 4La suma de elementos según la apilacion elementos
son 4 los cuales se van a dividir según
el contador
![Page 43: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/43.jpg)
![Page 44: Document7](https://reader036.vdocuments.net/reader036/viewer/2022062303/558329a1d8b42a6e768b542b/html5/thumbnails/44.jpg)
Gracias