-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpila.cpp
75 lines (70 loc) · 1.79 KB
/
pila.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <iostream>
#include <locale.h>
#include <conio.h>
#include <stdlib.h>
using namespace std;
void push(Node *&,int, string); //Prototipo de las funciones de la pila
void pop(Node *&,int &, string &);
int main(){
setlocale(LC_ALL,"spanish");
struct Node{
int edad;
string nombre;
Node *next_node; //Apuntador al siguiente nodo
};
//El último nodo en llegar a la pila se almacena aquí
Node *last_node = NULL;
int opcion;
int edad_1;
string nombre_1;
int output_value_1;
string output_value_2;
while(true){
cout<<"-------------------------"<<endl;
cout<<" Menú principal: "<<endl;
cout<<" 1) aplilar persona"<<endl;
cout<<" 2) desapilar persona"<<endl;
cout<<" 3) salir"<<endl;
cout<<" Ingrese la opción "<<endl;
cin>>opcion;
switch(opcion){
case 1:
cout<<" Ingrese el nombre: ";
cin>>nombre_1;
cout<<" Ingrese la edad: ";
cin>>edad_1;
push(last_node, edad_1, nombre_1);
cout<<" Se ha apilado a "<<nombre_1<<" con edad "<<edad_1<<endl;
break;
case 2:
pop(last_node, output_value_1, output_value_2);
cout<<output_value_2<<" con edad "<<output_value_1<<" ha salido de la pila"<<endl;
break;
case 3:
cout<<" Saliendo ... "<<endl;
return 1;
break;
default:
cout<<" valor no valido "<<endl;
break;
}
}
getch ();
return 0;
}
void push(Node *&last_node,int edad_1, string nombre_1){
//Crear el espacio en memoría para la nueva caja.
Node *new_node = new Node();
new_node->edad = edad_1;
new_node->nombre = nombre_1;
new_node->next_node = last_node;
last_node = new_node;
}
void pop(Node *&last_node,int &output_value_1, string &output_value_2){
//Apuntador a nodo Auxiliar
Node *aux = last_node;
output_value_1 = aux->edad;
output_value_2= aux->nombre;
last_node = aux->next_node;
delete aux;
}