Está en la página 1de 3

1 //By Jgg

2 #include <iostream>
3 using namespace std;
4
5 struct nodo{
6 int nro;
7 struct nodo *sgte;
8 };
9
10 typedef nodo *ptrPila; // creando nodo tipo puntero( tipo de dato )
11
12 /* Apilar elemento
13 ------------------------------------------------------------------------*/
14 void push( ptrPila &p, int valor )
15 {
16 ptrPila aux;
17 aux = new(struct nodo); // apuntamos al nuevo nodo creado
18 aux->nro = valor;
19
20 aux->sgte = p ;
21 p = aux ;
22 }
23
24 /* Desapilar elemento(devuelve elemento)
25 ------------------------------------------------------------------------*/
26 int pop( ptrPila &p )
27 {
28 int num ;
29 ptrPila aux;
30
31 aux = p ;
32 num = aux->nro; // asignamos el primer vamor de la pila
33
34 p = aux->sgte ;
35 delete(aux);
36
37 return num;
38 }
39
40 /* Muestra elementos de la pila
41 ------------------------------------------------------------------------*/
42 void mostrar_pila( ptrPila p )
43 {
44 ptrPila aux;
45 aux = p; // apunta al inicio de la lista
46
47 while( aux !=NULL )
48 {
49 cout<<"\t"<< aux->nro <<endl;
50 aux = aux->sgte;
51 }
52 }
53
54 /* Eliminar todos los elementos de la pila
55 ------------------------------------------------------------------------*/
56 void destruir_pila( ptrPila &p)
57 {
58 ptrPila aux;
59
60 while( p != NULL)
61 {
62 aux = p;
63 p = aux->sgte;
64 delete(aux);
65 }
66 }
67
68 /* Menu de opciones
69 ------------------------------------------------------------------------*/
70 void menu()
71 {
72 cout<<"\n\t IMPLEMENTACION DE PILAS EN C++\n\n";
73 cout<<" 1. APILAR "<<endl;
74 cout<<" 2. DESAPILAR "<<endl;
75 cout<<" 3. MOSTRAR PILA "<<endl;
76 cout<<" 4. DESTRUIR PILA "<<endl;
77 cout<<" 5. SALIR "<<endl;
78
79 cout<<"\n INGRESE OPCION: ";
80 }
81
82 /* Funcion Principal
83 ------------------------------------------------------------------------*/
84 int main()
85 {
86 ptrPila p = NULL; // creando pila
87 int dato;
88 int op;
89 int x ; // numero que devuelve la funcon pop
90
91 system("color 0b");
92
93 do
94 {
95 menu(); cin>> op;
96
97 switch(op)
98 {
99 case 1:
100
101 cout<< "\n NUMERO A APILAR: "; cin>> dato;
102 push( p, dato );
103 cout<<"\n\n\t\tNumero " << dato << " apilado...\n\n";
104 break;
105
106
107 case 2:
108
109 x = pop( p );
110 cout<<"\n\n\t\tNumero "<< x <<" desapilado...\n\n";
111 break;
112
113
114 case 3:
115
116 cout << "\n\n MOSTRANDO PILA\n\n";
117 if(p!=NULL)
118 mostrar_pila( p );
119 else
120 cout<<"\n\n\tPila vacia..!"<<endl;
121 break;
122
123
124 case 4:
125
126 destruir_pila( p );
127 cout<<"\n\n\t\tPila eliminada...\n\n";
128 break;
129
130 }
131
132 cout<<endl<<endl;
133 system("pause"); system("cls");
134
135 }while(op!=5);
136
137
138 return 0;
139 }
140

También podría gustarte