estoy diseñando un programa en C++ con pila dinamica pero al momento de extraer los datos quiero que lo haga de forma invertida, me pueden ayudar. Este es mi codigo:
#include <iostream>
using namespace std;
#define true 1
#define false 0
struct docentes{
char nom [10],ap[10],ced[10];
float s;
};
typedef struct pila{
docentes d;
pila *sgte;
}p;
typedef pila *pila1;
typedef pila *pila2;
void ingresar(pila1 *p1, docentes d);
docentes extraer(pila1 *p1);
void mostrar(pila1 *p1);
void veriifcar(pila1 *p1);
int main(){
pila1 pila_nueva=NULL;
int op;
docentes d,x;
do{
cout<<"eliga una opcion"<<endl;
cout<<"1.ingresar"<<endl;
cout<<"2.extraer"<<endl;
cout<<"3.mostrar"<<endl;
cout<<"4.verificar"<<endl;
cin>>op;
switch(op){
case 1:{
cout<<"ingrese nombre"<<endl;
cin>>d.nom;
cout<<"apellido"<<endl;
cin>>d.ap;
cout<<"cedula"<<endl;
cin>>d.ced;
cout<<"sueldo :"<<endl;
cin>>d.s;
ingresar(&pila_nueva,d);
break;
}
case 2:{
x=extraer(&pila_nueva);
if(pila_nueva!=NULL){
cout<<"extrayendo datos"<<endl;
cout<<"nombre"<<x.nom<<endl;
cout<<"apellido"<<x.ap<<endl;
cout<<"cedula"<<x.ced<<endl;
cout<<"sueldo"<<x.s<<endl;
}
else{
cout<<"pila vacia"<<endl;
}
break;
}
case 3:{
mostrar(&pila_nueva);
break;
}
case 4:{
if(pila_nueva!=NULL){
cout<<"la pila contiene elementos";
}
else{
cout<<"pila vacia";
}
break;
}
default:{
cout<<"opcion invalida";
break;
}
}
}while(op!=5);
return 0;
}
void ingresar(pila1 *p1, docentes d){
pila1 aux;
aux=new(pila);
aux->d=d;
aux->sgte;
*p1=aux;
}
docentes extraer(pila1 *p1){
pila2 aux;
docentes doc;
aux=*p1;
if(!aux){
return doc;
}
*p1=aux->sgte;
doc=aux->d;
delete(aux);
return doc;
}
void mostrar(pila1 *p1){
}
void veriifcar(pila1 *p1){
}