/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param node int整型
* @return 无
*/
struct List {
int data;
struct List* next;
}hand1={-1,NULL},hand2={-1,NULL};//头节点
typedef struct Stack {
struct List* top;
struct List* bottom;
}Stack;
static Stack S1 = { &hand1,NULL};//入队栈
static Stack S2 = { &hand2,NULL };//出队栈
void push(int node) {
// write code here
struct List* L;
L = (struct List*)malloc(sizeof(struct List));
L->data=node;
L->next=S1.top->next;
S1.top->next=L;
}
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param 无
* @return int整型
*/
void move(){
while(S1.top->next!=NULL){
struct List* L;
L = (struct List*)malloc(sizeof(struct List));
L->data=S1.top->next->data;
L->next=S2.top->next;
S2.top->next=L;
L=S1.top->next->next;
free(S1.top->next);
S1.top->next=L;
}
}
int pop() {
// write code here
int r;
struct List* D;
if(S2.top->next==NULL){
move();
}
r=S2.top->next->data;
D=S2.top->next->next;
free(S2.top->next);
S2.top->next=D;
return r;
}