#include <myhead.h>
typedef struct node
{
int data;
struct node *next;
}Node;
typedef struct
{
int len;
Node *top;
}Stack,*Pstack;
Pstack creat_stack()
{
Pstack p=malloc(sizeof(Stack));
if(p==NULL)
{
printf("创建链栈失败\n");
return NULL;
}
p->len=0;
p->top=NULL;
return p;
}
void push_stack(Pstack L,int n)
{
if(L==NULL)
{
printf("链栈不存在\n");
return;
}
Node *p=malloc(sizeof(Node));
p->data=n;
p->next=L->top;
L->top=p;
L->len++;
printf("入栈成功\n");
}
void output_stack(Pstack L)
{ if(L==NULL||L->len==0)
{
printf("栈不存在\n");
return;
}
int i;
Node*t=L->top;
for(i=0;i<L->len;i++)
{
printf("%d\t",t->data);
t=t->next;
}
}
int pop_stack(Pstack L)
{
if(L==NULL)
{
printf("栈不存在\n");
return -1;
}
Node *q=L->top;
printf("出栈节点:%d\n",q->data);
L->top=q->next;
L->len--;
free(q);
q=NULL;
printf("出栈成功\n");
}
int des_stack(Pstack L)
{
Node *t;
while(t!=NULL)
{
t=L->top;
L->top=L->top->next;
free(t);
}
free(L);
L=NULL;
printf("节点释放成功\n");
return 0;
}
int main(int argc, const char *argv[])
{
Pstack L=creat_stack();
push_stack(L,100);
push_stack(L,200);
push_stack(L,300);
push_stack(L,400);
output_stack(L);
pop_stack(L);
output_stack(L);
des_stack(L);
return 0;
}