#include
#include
typedef  struct SNode* Snode;
typedef  int ElementType;//易于修改提高精度或者程序可读性
typedef struct SNode
{
    ElementType data;
    Snode next;
};

Snode CreateStack( )
{
Snode p;
p = (Snode)malloc(sizeof( SNode));
p->next = NULL;
return p;
}

bool Push(Snode p, ElementType x)//注意用bool
{//放入数据
Snode q;
q = (Snode)malloc(sizeof(SNode));
q->data = x;
q->next = p->next;
p->next = q;
return true;
}

ElementType Pop(Snode p)//判断是否空或者满(不再赘述)
{//这个p是一个没有数据的头节点
//取数
//这时的p其实是把地址传送到子函数,这时的p也就是母函数中的p
ElementType x= p->data;
Snode q=p->next;//注意此时的p->next 发生变化而p未发生变化
p->next = q->next;
free(p);
return x;
}