Ejemplos De Pilas
2. #include
3.
4. typedef struct pila
5. {
6. int clave;
7. struct pila *psig;
8. }pila;
9.
10. pila *pmaestro;
11. /*Declaración de funciones*/
12. pila*NuevoElem();
13. void push(int dato);
14. int pop(void);
15. void imprimir(pila *);
16. /*Fin de las declaraciones*/
17.
18.
19. /*******************************FUNCIONMAIN*****************************/
20.
21. main()
22. {
23. char m;
24. int k;
25. puts("Anadir un elemento [A], borrar el ultimo elemento [B], listar todo [L] o salir [S]: ");
26. while(1){
27. printf("[A], [B], [L] o[S]: ");
28. m=getchar();
29. getchar();
30.
31. switch(m){
32. case 'A': printf("Introduzca un número: "); scanf("%d", &k); getchar(); push(k); break;
33. case 'B': pop(); break;
34. case 'L': imprimir(pmaestro); break;
35. case 'S': exit(0);
36. default: puts("\nSaliendo del programa...");
37.
38. return 0;
39. }
40. }
41. }
42.
43./**************************************************************************/
44.
45. void push(int dato) /*Añade un nuevo elemento a la pila*/
46. { pila *q = NuevoElem();
47. q->psig = pmaestro;
48. q->clave = dato;
49. pmaestro= q;
50. }
51.
52. int pop(void) /*Esta función "desecha" el último elemento introducido*/
53. { pila *q; int x;
54. if (pmaestro==NULL) { puts("Lista vac¡a"); return EOF; }
55. else{
56. x =pmaestro->clave;
57. q = pmaestro;
58. pmaestro = pmaestro->psig;
59. free(q);
60.
61. return x;
62. }}
63.
64. pila *NuevoElem() /*Crea un nuevo elemento. Atento: retorna un puntero*/65. { pila *q = (pila *)malloc(sizeof(pila));
66. if (q==NULL) { printf("Falta memoria"); exit(0);}
67. return q;
68. }
69.
70. void imprimir(pila *pmaestro) /*Imprime todos los datos albergadosen la pila hasta el momento*/
71. {
72. printf("Las claves introducidas son: ");
73. while(pmaestro!=NULL)
74. {
75. printf("%d ", pmaestro->clave);
76. pmaestro = pmaestro->psig;
77. }
78....
Regístrate para leer el documento completo.