#include<stdio.h>

#include<stdlib.h>

typedef struct node

{

    int data;

    struct node *next;

}Node,*PNode;

typedef struct

{

    PNode top;

    int size;

}Stack;


Stack *InitStack() //构造一个空栈

{

    Stack *p = (Stack *)malloc(sizeof(Stack));

    if(p!=NULL)

    {

        p->top = NULL;

        p->size = 0;

    }

    return p;

}

void push(Stack *S,int item) //入栈

{

    PNode p = (PNode)malloc(sizeof(Node));

    if(p != NULL)

    {

        p->data = item;

        p->next = S->top;

        S->top = p;

        S->size++;

    }

}

void pop(Stack *S,int *m) //出栈

{

    if(S->size > 0)

    {

        PNode p = S->top;

        S->top = p->next;

        S->size--;


        *m = p->data;

        free(p);

    }

}

int main()

{

    Stack *S;

    int m;


    S = InitStack();

    push(S,1);

    pop(S,&m);

    printf("%d\n",m);

}