题解 | #用两个栈实现队列#
用两个栈实现队列
http://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param node int整型
* @return 无
*
* C语言声明定义全局变量请加上static,防止重复定义
*/
#define Max 1000
typedef struct Stack{
int data[Max+1];
int top;
}SqStack;
SqStack s1, s2;
void push(int node ) {
// write code here
if(s1.top == Max && s2.top != 0){
printf("栈已满");
}else if(s1.top == Max && s2.top == 0){
while(s1.top != 0){
s2.data[++s2.top] = s1.data[s1.top--];
}
}
s1.data[++s1.top] = node;
}
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param 无
* @return int整型
*/
int pop() {
// write code here
if(s2.top != 0) return s2.data[s2.top--];
else if(s1.top == 0){
printf("队列为空");
return 0;
}else{
while(s1.top != 0){
s2.data[++s2.top] = s1.data[s1.top--];
}
return s2.data[s2.top--];
}
}