#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
typedef struct {
char name[20];
}ElemType;
typedef struct st{
ElemType data;
struct st *next;
}LNode,*LinkStack;
bool InitStack(LinkStack *L);
bool Empty(LinkStack *L);
void Push(LinkStack *L,ElemType e);
bool pop(LinkStack *L,ElemType *e);
ElemType GetTop(LinkStack *L);
int main() {
LinkStack *L=(LinkStack *)malloc(sizeof(LinkStack));
InitStack(L);
Empty(L);
ElemType a={"aaa"},b={"bbb"},c={"ccc"};
Push(L,a);
GetTop(L);
Push(L,a);
GetTop(L);
pop(L,&c);
return 0;
}
bool InitStack(LinkStack *L){
*L=NULL;//防止脏数据
return true;
}
bool Empty(LinkStack *L){
if (*L==NULL){
return true;
} else
return false;
}
void Push(LinkStack *L,ElemType e){
LNode *s = (LNode *) malloc(sizeof(LNode));
s->data=e;
s->next=*L;
*L= s;
}
bool pop(LinkStack *L,ElemType *e){
if (*L == NULL) {
return false;
}
*e=(*L)->data;
(*L)=(*L)->next;
return true;
}
ElemType GetTop(LinkStack *L){
return (*L)->data;
}