7

747 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
747
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

7

  1. 1. FUNCIONAMIENTO DE UN PILA <br />Integrantes: <br />Jefferson Arcos <br />Oscar Ibarra<br />
  2. 2. Definición PILA <br />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, FirstOutput.<br />
  3. 3. Mecanismo de una PILA<br /> Una pila tiene como principal mecanismo ciertas partes que conforman la pila las cuales son:<br />El tope <br />La estructura de nodo PILA <br />La variable aux <br />La variable dato<br />
  4. 4. Función pila <br />dato<br />sig.<br />inicio<br />dato<br />sig.<br /> 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<br />dato<br />sig.<br />dato<br />NULL<br />sig.<br />
  5. 5. Operaciones de una pila <br /> La operaciones que realiza una pila son formas por la cual cumple ciertas funciones para la operación de una pila la cuales son <br />Inicializar pila <br />Insertar elemento de la pila <br />Eliminar elemento de la pila<br />Recorrer elemento de la pila<br />
  6. 6. Función iniciar PILA<br /> 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 <br />Función iniciar pila(nodo **tope )<br /> El tope estará apuntando a un valor nulo (NULL)<br /> Al ingresar una dato el tope estará apuntando a un puntero denominado dato ,siguiente <br />
  7. 7. Función insertar o apilar Elemento <br /> Al insertar una elemento en la pila el mecanismo de insertar será de la siguiente forma:<br />Función apilar (Estructura nodo **tope, Entero dat)<br />Inicio <br />Estructura nodo *aux <br /> aux=new nodo <br /> Si (aux=NULL) Entonces<br /> Escribir "Memoria Insuficiente" <br /> Fin <br /> aux->dato=dat <br /> aux->sig=*tope <br /> *tope=aux <br />Fin<br />
  8. 8. Función eliminar o desapilar un elemento <br /> Es función permite eliminar un elemento de una pila y su función será de la forma:<br />Función desapilar(Estructura nodo **tope)<br />Inicio<br /> Estructura nodo *aux <br /> Si (vacía(&(*tope))) Entonces<br /> Escribir " Pila Vacía." <br />Sino<br />aux=*tope <br /> Escribir " Elemento eliminado: “, (*tope)->dato <br />*tope=(*tope)->sig <br /> delete aux <br />Fin<br />Fin<br />
  9. 9. Función recorrer elementos de una pila <br /> 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:<br />Inicio<br />Estructura nodo *aux <br /> Si (vacia(&(*tope))) Entonces<br /> Escribir "Pila Vacía. " <br /> sino<br /> aux=*tope <br /> Mientras(aux!=NULL)<br /> Escribir " Dato: ", aux->dato <br /> aux=aux->sig <br /> Fin Mientras<br /> Fin<br />Fin<br />
  10. 10. Nuevas funciones para una pila <br />
  11. 11. Funcion contar elementos <br /> 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 <br />
  12. 12. Funcion Contar<br />Funcion contar.<br /> <br />Nombre: Contar<br /> <br />Utilidad: Cuenta los elmentos que hay en una pila.<br /> <br />Pre: p={}<br /> p={e1,e2,e3...en}<br /> <br />Post: Pila vacia<br /> Numero de elmentos = e<br />
  13. 13. Funcion Contar<br />Codificacion<br /> <br />void contar(struct nodoPila **tope)<br /> <br />{struct nodoPila *aux;<br /> int cont=0;<br /> if(*tope==NULL)<br /> {cout<<" Pila Vacia. ";<br /> }<br /> else<br /> {aux=*tope;<br /> while(aux!=NULL)<br />{aux=aux->sig;<br />cont++;<br /> }<br /> }<br /> cout<<” El numero de elmentos en la pila es:”<<cont; <br /> getch();<br />} <br />
  14. 14. Funcion Contar<br />Tope<br />7<br />3<br />5<br />Aux<br />
  15. 15. Funcion Contar<br />Tope<br />7<br />3<br />5<br />Codificacion<br /> <br />void contar(struct nodoPila **tope)<br /> <br />{struct nodoPila *aux;<br /> int cont=0;<br /> if(*tope==NULL)<br /> {cout<<" Pila Vacia. ";<br /> }<br /> else<br /> {aux=*tope;<br /> while(aux!=NULL)<br />{aux=aux->sig;<br />cont++;<br /> }<br /> }<br /> cout<<” El numero de elmentos en la pila es:”<<cont; <br /> getch();<br />} <br />Aux<br />
  16. 16. Funcion Contar<br />Tope<br />7<br />3<br />5<br />Codificacion<br /> <br />void contar(struct nodoPila **tope)<br /> <br />{struct nodoPila *aux;<br /> int cont=0;<br /> if(*tope==NULL)<br /> {cout<<" Pila Vacia. ";<br /> }<br /> else<br /> {aux=*tope;<br /> while(aux!=NULL)<br />{aux=aux->sig;<br />cont++;<br /> }<br /> }<br /> cout<<” El numero de elmentos en la pila es:”<<cont; <br /> getch();<br />} <br />Aux<br />intcont=0<br />
  17. 17. Funcion Contar<br />Tope<br />7<br />3<br />5<br />Codificacion<br /> <br />void contar(struct nodoPila **tope)<br /> <br />{struct nodoPila *aux;<br /> int cont=0;<br /> if(*tope==NULL)<br /> {cout<<" Pila Vacia. ";<br /> }<br /> else<br /> {aux=*tope;<br /> while(aux!=NULL)<br />{aux=aux->sig;<br />cont++;<br /> }<br /> }<br /> cout<<” El numero de elmentos en la pila es:”<<cont;<br /> getch();<br />} <br />Aux<br />Intcont=1<br />
  18. 18. Funcion Contar<br />Tope<br />7<br />3<br />5<br />Codificacion<br /> <br />void contar(struct nodoPila **tope)<br /> <br />{struct nodoPila *aux;<br /> int cont=0;<br /> if(*tope==NULL)<br /> {cout<<" Pila Vacia. ";<br /> }<br /> else<br /> {aux=*tope;<br />while(aux!=NULL)<br />{aux=aux->sig;<br />cont++;<br /> }<br /> }<br /> cout<<” El numero de elmentos en la pila es:”<<cont; <br /> getch();<br />} <br />Aux<br />Intcont=2<br />
  19. 19. Funcion Contar<br />Tope<br />7<br />3<br />5<br />Codificacion<br /> <br />void contar(struct nodoPila **tope)<br /> <br />{struct nodoPila *aux;<br /> int cont=0;<br /> if(*tope==NULL)<br /> {cout<<" Pila Vacia. ";<br /> }<br /> else<br /> {aux=*tope;<br />while(aux!=NULL)<br />{aux=aux->sig;<br />cont++;<br /> }<br /> }<br /> cout<<” El numero de elmentos en la pila es:”<<cont; <br /> getch();<br />} <br />Aux<br />Intcont=3<br />
  20. 20. Funcion Contar<br />Tope<br />7<br />3<br />5<br />Codificacion<br /> <br />void contar(struct nodoPila **tope)<br /> <br />{struct nodoPila *aux;<br /> int cont=0;<br /> if(*tope==NULL)<br /> {cout<<" Pila Vacia. ";<br /> }<br /> else<br /> {aux=*tope;<br />while(aux!=NULL)<br />{aux=aux->sig;<br />cont++;<br /> }<br /> }<br />cout<<” El numero de elmentos en la pila es:”<<cont; <br /> getch();<br />} <br />Aux<br />Intcont=3<br />“El numero de elementos en la pila es: 3” <br />
  21. 21. Función promedio de los elementos en una pila <br /> 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 <br />
  22. 22. Función promediar elementos en una pila <br />Función promediar<br />Nombre: promediar<br /> <br />Utilidad: Hacer el promedio de los datos de una pila.<br /> <br />Pre: p={}<br /> p={e1,e2,e3...en}<br /> <br />Post: Pila vacía<br /> El promedio de los datos es = e<br />
  23. 23. funcionamiento de promediar elementos en una pila <br />Codificacion.<br />void promediar(struct nodoPila **tope)<br />{struct nodoPila *aux;<br /> int elem=0;<br /> float prom=0, sum=0;<br /> if(*tope==NULL)<br /> {cout<<" Pila Vacia. ";<br /> }<br /> else<br /> {aux=*tope;<br /> while(aux!=NULL)<br />{sum=sum+aux->dato;<br /> aux=aux->sig;<br /> elem++;<br /> }<br /> prom=(sum/elem); <br /> cout<<" El promedio de los elementos es: <<prom;<br /> }<br /> getch();<br />}<br />
  24. 24. Grafica de Promediar<br />Tope<br />7<br />float sum=0;<br />elem=0<br />
  25. 25. Grafica de Promediar<br />Tope<br />7<br />3<br />float sum=0;<br />elem=0<br />
  26. 26. Grafica de Promediar<br />Tope<br />7<br />3<br />5<br />float sum=0;<br />elem=0<br />
  27. 27. Tope<br />7<br />3<br />5<br />Codificacion.<br />void promediar(struct nodoPila **tope)<br />{struct nodoPila *aux;<br /> int elem=0;<br /> float prom=0, sum=0;<br /> if(*tope==NULL)<br /> {cout<<" Pila Vacia. ";<br /> }<br /> else<br /> {aux=*tope;<br /> while(aux!=NULL)<br />{sum=sum+aux->dato;<br /> aux=aux->sig;<br /> elem++;<br /> }<br /> prom=(sum/elem); <br /> cout<<" El promedio de los elementos es: <<prom;<br /> }<br /> getch();<br />}<br />Aux<br />Grafica de Promediar<br />float sum=0;<br />elem=0<br />
  28. 28. Tope<br />7<br />3<br />5<br />Codificacion.<br />void promediar(struct nodoPila **tope)<br />{struct nodoPila *aux;<br /> int elem=0;<br /> float prom=0, sum=0;<br /> if(*tope==NULL)<br /> {cout<<" Pila Vacia. ";<br /> }<br /> else<br /> {aux=*tope;<br /> while(aux!=NULL)<br />{sum=sum+aux->dato;<br /> aux=aux->sig;<br /> elem++;<br /> }<br /> prom=(sum/elem); <br /> cout<<" El promedio de los elementos es: <<prom;<br /> }<br /> getch();<br />}<br />Aux<br />Grafica de Promediar<br />5<br />float sum=5;<br />elem=1<br />
  29. 29. Tope<br />7<br />3<br />5<br />Codificacion.<br />void promediar(struct nodoPila **tope)<br />{struct nodoPila *aux;<br /> int elem=0;<br /> float prom=0, sum=0;<br /> if(*tope==NULL)<br /> {cout<<" Pila Vacia. ";<br /> }<br /> else<br /> {aux=*tope;<br /> while(aux!=NULL)<br />{sum=sum+aux->dato;<br /> aux=aux->sig;<br /> elem++;<br /> }<br /> prom=(sum/elem); <br /> cout<<" El promedio de los elementos es: <<prom;<br /> }<br /> getch();<br />}<br />Aux<br />Grafica de Promediar<br />3<br />5<br />float sum=8;<br />elem=2<br />
  30. 30. Tope<br />7<br />3<br />5<br />Codificacion.<br />void promediar(struct nodoPila **tope)<br />{struct nodoPila *aux;<br /> int elem=0;<br /> float prom=0, sum=0;<br /> if(*tope==NULL)<br /> {cout<<" Pila Vacia. ";<br /> }<br /> else<br /> {aux=*tope;<br /> while(aux!=NULL)<br />{sum=sum+aux->dato;<br /> aux=aux->sig;<br /> elem++;<br /> }<br /> prom=(sum/elem); <br /> cout<<" El promedio de los elementos es: <<prom;<br /> }<br /> getch();<br />}<br />Aux<br />Grafica de Promediar<br />7<br />3<br />5<br />float sum=15;<br />elem=3<br />
  31. 31. Tope<br />7<br />3<br />5<br />Codificacion.<br />void promediar(struct nodoPila **tope)<br />{struct nodoPila *aux;<br /> int elem=0;<br /> float prom=0, sum=0;<br /> if(*tope==NULL)<br /> {cout<<" Pila Vacia. ";<br /> }<br /> else<br /> {aux=*tope;<br /> while(aux!=NULL)<br />{sum=sum+aux->dato;<br />aux=aux->sig;<br /> elem++;<br /> }<br />prom=(sum/elem); <br /> cout<<" El promedio de los elementos es: <<prom;<br /> }<br /> getch();<br />}<br />Aux<br />Grafica de Promediar<br />7<br />3<br />5<br />float sum=15;<br />elem=3<br />Prom<br />
  32. 32. Tope<br />7<br />3<br />5<br />Codificacion.<br />void promediar(struct nodoPila **tope)<br />{struct nodoPila *aux;<br /> int elem=0;<br /> float prom=0, sum=0;<br /> if(*tope==NULL)<br /> {cout<<" Pila Vacia. ";<br /> }<br /> else<br /> {aux=*tope;<br /> while(aux!=NULL)<br />{sum=sum+aux->dato;<br />aux=aux->sig;<br /> elem++;<br /> }<br />prom=(sum/elem); <br /> cout<<" El promedio de los elementos es: <<prom;<br /> }<br /> getch();<br />}<br />Aux<br />Grafica de Promediar<br />prom<br />float sum=15;<br />elem=3<br />
  33. 33. Tope<br />7<br />3<br />5<br />Codificacion.<br />void promediar(struct nodoPila **tope)<br />{struct nodoPila *aux;<br /> int elem=0;<br /> float prom=0, sum=0;<br /> if(*tope==NULL)<br /> {cout<<" Pila Vacia. ";<br /> }<br /> else<br /> {aux=*tope;<br /> while(aux!=NULL)<br />{sum=sum+aux->dato;<br />aux=aux->sig;<br /> elem++;<br /> }<br /> prom=(sum/elem); <br />cout<<" El promedio de los elementos es: <<prom;<br /> }<br /> getch();<br />}<br />Aux<br />Grafica de Promediar<br />prom<br />5<br />“El promedio de los elementos es: 5”<br />
  34. 34. Grafica de promediar<br />3<br />1er elemento<br />
  35. 35. Grafica de promediar<br />1er elemento<br />Var cont.<br />3<br />
  36. 36. Grafica de promediar<br />1er elemento<br />Var cont.<br />3<br />1<br />
  37. 37. Grafica de promediar<br />2º elemento<br />5<br />Var cont.<br />3<br />1<br />
  38. 38. Grafica de promediar<br />2do elemento<br />5<br />2<br />Var cont.<br />3<br />1<br />
  39. 39. Grafica de promediar<br />3er elemento<br />7<br />3<br />5<br />2<br />Var cont.<br />3<br />1<br />
  40. 40. Grafica de promediar<br />4to elemento<br /> elementos son 4<br />9<br />4<br />7<br />3<br />5<br />2<br />3<br />1<br />
  41. 41. Grafica de promediar<br />La suma de elementos según la apilacion <br />9<br />La suma de elementos según la apilacion <br /> elementos son 4 los cuales se van a dividir según el contador<br />4<br />7<br />3<br />5<br />2<br />3<br />1<br />
  42. 42. Grafica de promediar<br />9<br />La suma de elementos según la apilacion <br /> elementos son 4 los cuales se van a dividir según el contador<br />4<br />7<br />3<br />5<br />2<br />3<br />1<br />
  43. 43.
  44. 44. Gracias <br />

×