题解 | #用两个栈实现队列#

用两个栈实现队列

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--];
    }
}
全部评论

相关推荐

3 收藏 评论
分享
牛客网
牛客企业服务