链表结构:
typedef int datatype;
typedef struct node{
datatype data;
struct node *next;
}Stacknode;
主函数定义:
Stacknode *top;
top=(Stacknode *)malloc(sizeof(Stacknode));
入栈:
bool push_stack(Stacknode *top,datatype x)
{
Stacknode *p;
if((p=(Stacknode *)malloc(sizeof(Stacknode)))==NULL)
return false;
printf("%d入栈\n",x);
p->data=x;
p->next=top->next;
top->next=p;
return true;
}
出栈并返回出栈的元素值:
datatype pop_stack(Stacknode *top)
{
Stacknode *p;
datatype x;
if(top->next==NULL)
return NULL;
p=top->next;
top->next=p->next;
x=p->data;
free(p);
return x;
}
判栈空:空则真,不空为假
bool empty_stack(Stacknode *top)
{
if(top->next==NULL)
return true;
else
return false;
}