* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param node int整型 
 * @return 无
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 */

#define Ele int
#define MIN -10000

struct Stack {
    Ele val;
    struct Stack* next;
};

typedef struct Stack Stack;

Stack *S1;
Stack *S2;


Stack* Create_Stack(void)
{
    Stack* p=(Stack*)malloc(sizeof(Stack));
    if (p == NULL)
        printf("空间不够了\n");
    else
    {
        p->next = NULL;
        p->val = MIN;
    }
    return p;
}



void Spush(Stack*p,Ele a)
{

    Stack* tmp;
    tmp = (Stack*)malloc(sizeof(Stack));
    tmp->val = a;
    tmp->next = p->next;
    p->next = tmp;
    
}


Ele Spop(Stack* p)
{
    Ele tmp;
    Stack* t;
    if (!(p->next))
        printf("堆栈为空\n");
    else
    {
        tmp = p->next->val;
        t = p->next;
        p->next = t->next;
        free(t);
        t = NULL;
    }
    return tmp;
}




void push(int node) {
    // write code here
    if(!S1)
        S1=Create_Stack();
    if(!S2)
        S2=Create_Stack();
    Spush(S1,node);
}



int pop() {
    // write code here
    Ele data;
    
    if(!S1)
        S1=Create_Stack();
    if(!S2)
        S2=Create_Stack();
    
    if (S2->next == NULL )
    {
        while (S1->next != NULL)
        {
            data =Spop(S1);
            Spush(S2,data);
        }
    }
    if (S2->next == NULL)
        printf("队列已经空了");
    data = Spop(S2);
    return data;
}