#include<stdlib.h>
#include<stdio.h>

struct node
{
   int data;
   struct node *next;
};

typedef struct node list;
typedef list *link;
link stack=NULL;

//打印堆栈数据
void print_stack()
{
link temp=NULL;
temp=stack;
 
if(temp==NULL)
     printf("\nthe stack is empty!!\n");
else
      {
         while(temp!=NULL)
             {
             printf("[%d]",temp->data);
             temp=temp->next;
         }
         printf("\n");
    }
}
//存入堆栈数据
void push(int value)
{
    link newnode;
    printf("\nthe stack content before (top->bottom)");
    print_stack();
    newnode=(link) malloc(sizeof(list));
    newnode->data=value;
    newnode->next=stack;
    stack=newnode;
    print_stack();

}
void pop()
{ 
    link top;
    printf("the stack content before(top->bottom)\n");
    print_stack();
    if(stack!=NULL)
        {
        top=stack;
        stack=stack->next;
        print_stack();
        free(top);
        
    }
}

void main()
{
   link pointer;
   int i=1,value=100;
   for(;i<=5;i++)
       push(i*value);
   for(;i>=1;i--)
       pop();
}