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;
    
}