Una pila (stack en inglés) es una lista ordinal o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO (del inglés Last In First Out, último en entrar, primero en salir) que permite almacenar y recuperar datos. Esta estructura se aplica en multitud de ocasiones en el área de informática debido a su simplicidad y ordenación implícita de la propia estructura.
Para el manejo de los datos se cuenta con dos operaciones básicas: apilar (push), que coloca un objeto en la pila, y su operación inversa, retirar (o desapilar, pop), que retira el último elemento apilado.
Para el manejo de los datos se cuenta con dos operaciones básicas: apilar (push), que coloca un objeto en la pila, y su operación inversa, retirar (o desapilar, pop), que retira el último elemento apilado.
En esta ocasión crearé una "pila" usando sus métodos comunes: Apilar, Desapilar
//Clase Dato
class Dato
{
public:
char nombre[40];
char apellidos[40];
int edad;
};
//Clase Principal
#include <iostream>
#include "Dato.h"
using namespace std;
void ApilarDato(Dato Pila[] , int &top) {
if (top = -1) {
top=0;
cout << "Ingrese nombre: "; cin >> Pila[top].nombre;
cout << "Ingrese Primer apellido: "; cin >> Pila[top].apellidos;
cout << "Ingrese Edad: "; cin >> Pila[top].edad;
cout << endl;
}
else
{
top++;
cout << "Ingrese nombre: "; cin >> Pila[top].nombre;
cout << "Ingrese Primer apellido: "; cin >> Pila[top].apellidos;
cout << "Ingrese Edad: "; cin >> Pila[top].edad;
cout << endl;
}
}
void DesapilarDato(Dato Pila[], int &top) {
cout << "Desapilando dato..." << endl;
cout << "Nombre:" << Pila[top].nombre << endl;
cout << "Primer Apellido:" << Pila[top].apellidos << endl;
cout << "Edad:" << Pila[top].edad << endl;
}
int main()
{
Dato Pila[10];
int top = -1;
int opc;
do {
cout << "Hola :D, Ingrese una opcion:" << endl;
cout << "1.La pila esta vacia?" << endl;
cout << "2.Apilar Dato" << endl;
cout << "3.Desapilar Dato" << endl;
cout << "4.Finalizar" << endl;
cin >> opc;
switch (opc)
{
case 1:
if (top != -1)
cout << "La pila contiene elementos" << endl;
else
cout << "La pila se encuentra vacia" << endl;
break;
case 2:
ApilarDato(Pila, top);
break;
case 3:
DesapilarDato(Pila, top);
break;
default:
cout << "Opcion no encontrada" << endl;
opc = 4;
}
} while (opc != 4);
system("PAUSE");
return 0;
}