#include<cstdlib>
#include<cstdio>
#include<cstring>
#include<string>
#include<iostream>
#include<algorithm>
#define MAXLEN 100
using namespace std;
typedef struct{
char name[10];
int age;
}DATA;
typedef struct stack{
DATA data[MAXLEN+1];
int top;
}StackType;
StackType * STInit(){
StackType * p;
if(p=(StackType*)malloc(sizeof(StackType))){
p->top=0;
return p;
}
return NULL;
}
int STIsEmpty(StackType* s){
int t;
t=(s->top==0);
return t;
}
int STIsFull(StackType * s ){
int t;
t=(s->top==MAXLEN);
return t;
}
void STClear(StackType * s){
s->top=0;
}
void STFree(StackType * s){
if(s){
free(s);
}
}
int PushST(StackType *s , DATA data){
if((s->top+1)>MAXLEN){
cout<<"栈溢出!\n";
return 0;
}
s->data[++s->top]=data;
return 1;
}
DATA PopST(StackType * s){
if(s->top==0){
cout<<"栈为空!\n";
exit(0);
}
return (s->data[s->top--]);
}
DATA PeekST(StackType * s){
if(s->top==0){
cout<<"栈为空!\n";
exit(0);
}
return (s->data[s->top]);
}
int main(){
StackType * stack;
DATA data1, data;
stack=STInit();
cout<<"入栈操作:\n";
cout<<"输入姓名 年龄进行操作:\n";
do{
cin>>data.name>>data.age;
if(strcmp(data.name,"0")==0){
break;
}
else{
PushST(stack, data);
}
}while(1);
do{
cout<<"出栈操作:按任意键进行出栈操作:\n";
getchar();
data1=PopST(stack);
cout<<"出栈的数据是"<<data1.name<<" "<<data1.age<<endl;
}while(1);
STFree(stack);
return 0;
}