#include<stdio.h>
#include<stdlib.h>
#define MaxSize 10
typedef struct LinkNode{
int data;
struct LinkNode *next;
}LinkNode,*LiStack;
void InitStack(LiStack &S){
S = (LinkNode *)malloc(sizeof(LinkNode));
S->next = NULL;
}
bool Push(LiStack &S,int e){
LinkNode *s = (LinkNode *)malloc(sizeof(LinkNode));
s->data = e;
s->next = S->next;
S->next = s;
return true;
}
bool Pop(LiStack &S,int &e){
if(S->next == NULL){
return false;
}
LinkNode *p = S->next;
e = p->data;
S->next = p->next;
free(p);
return true;
}
bool GetTop(LiStack S,int &e){
if(S->next == NULL){
return false;
}
e = S->next->data;
return true;
}
void PrintStack(LiStack S){
LinkNode *s=S->next;
while(s!=NULL){
printf("\t%d",s->data);
s=s->next;
}
printf("\n");
}
int main(){
LiStack S;
InitStack(S);
for(int i = 0; i < 5; i++){
Push(S,i);
}
PrintStack(S);
for(int i = 0; i < 5; i++){
int e;
bool flag = Pop(S,e);
if(flag){
printf("\t%d",e);
}
}
}