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

用两个栈实现队列

http://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6

C语言两个栈实现队列

  1. 思路:先考虑栈结构,类似一个水桶,先进的元素再最下面;如果说像队列一样,先进的元素最先出去,也就是相当于将栈翻一翻,将水桶的水倒进另一个水桶。因此考虑使用栈,以及倒置栈
  2. 入栈操作:正常入栈1,同时将栈1倒置,重置栈2;
  3. 出栈操作:从栈2中弹出一个元素,同时使用栈2倒置,重置栈1
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param node int整型 
 * @return 无
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 */
static int stack1[1000];
static int top1=0;
static int stack2[1000];
static int top2=0;
void push(int node ) {
    // write code here
    //先入栈stack1
    stack1[top1++]=node;
    //将stack1倒入stack2
    top2=0;
    for(int i=0;i<top1;i++){
        stack2[top2++]=stack1[top1-1-i];
    }
    
}

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param 无 
 * @return int整型
 */
int pop() {
    // write code here
    //先从栈2出栈
    int ans=stack2[top2-1];
    top2--;
    //倒置栈
    top1=0;
    for(int i=0;i<top2;i++)
        stack1[top1++]=stack2[top2-1-i];
    return ans;
    
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-09 12:23
转人工😡
门口唉提是地铁杀:五次握手了
点赞 评论 收藏
分享
评论
12
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务