ChainStack.h
typedef struct Node{
DATA data;
struct Node *next;
}ChainStack;
//////有头结点的链栈 /////////
ChainStack *CreatChainStack()//构建栈的头结点,返回该结点指针
{
ChainStack *top;
top=malloc(sizeof(struct Node));//头结点
top->next=NULL;//初始化 空栈
return top;
}
int ChainStackIsEmpty(ChainStack *top)// 判断栈是否为空,空返回1
{
return(top->next==NULL);
}
void ChainStackPush(ChainStack *top,DATA data)//入栈
{
ChainStack *node;
if(!(node=malloc(sizeof(struct Node)))){
printf("分配空间失败!\n");
exit(0);
}
node->data=data;
node->next=top->next;
top->next=node;
}
DATA ChainStackPop(ChainStack *top)//出栈
{
if(ChainStackIsEmpty(top))
{
printf("栈为空!\n");
//return NULL; error:incompatible types when returning type 'void *' but 'DATA' was expected. //NULL空指针
exit(0);
}else{
DATA data;
struct Node *node1;
node1=top->next;//指向栈顶结点
data=node1->data;
top-