typedef struct linknode
{
ElemType data;
struct linknode * next;
}LiStack;
void InitStack(LiStack * &lst)
{
lst = (LiStack *)malloc(sizeof(LiStack));
lst -> next = NULL;
}
int StackEmpty(LiStack * lst)
{
return(lst -> next) == NULL;
}
void Push(LiStack * &lst,ElemType x)
{
LiStack * p;
p = (LiStack * )malloc(sizeof(LiStack));
p -> data = x;
p -> next = lst -> next;
lst -> next = p;
}
int Pop(LiStack * &lst,ElemType &x)
{
LiStack * p;
if(lst -> next == NULL)
return 0;
p = lst -> next;
x = p -> data;
lst -> next = p -> next;
free(p);
return 1;
}
int GetTop(LiStack * &lst,ElemType &x)
{
LiStack * p;
if(lst -> next == NULL)
return 0;
p = lst -> next;
x = p -> data;
return 1;
}