剑指offer——两个栈实现队列


   //队列是先进先出,栈是先进后出,所以要两个栈,一个栈进元素,此时只能后来的先出,就需要再来一个栈,先压入第二个栈中,再出第二个栈

import java.util.Stack;

public class Solution {
    Stack<Integer> stack1 = new Stack<Integer>();
    Stack<Integer> stack2 = new Stack<Integer>();
 
    public void push(int node) {
        stack1.push(node);//第一个栈 先入栈
    }
    public int pop() {
        if(stack1.isEmpty()&&stack2.isEmpty())
        {return 0;}
        else
        {
               if(stack2.isEmpty())//注意一定要检查第二个栈是否为空
             {
                  while(!stack1.isEmpty())//第一个栈全部入栈到第二个
                  {
                      stack2.push(stack1.pop());
                  }
             }
            return stack2.pop();
        }
        }   
    }

    下面我根据剑指的答案看了一个抛错的方式。。我不怎么会,觉得挺好的

public int pop() throws Exception{ //这里的声明必须有

        
      if(stack1.isEmpty()&&stack2.isEmpty()))
        {
            throw new Exception("栈为空");//new一个Exception
        }
      if (stack2.isEmpty()) {
        while(!stack1.isEmpty()) {
            stack2.push(stack1.pop());
        }
    }
    return stack2.pop();
    }
}
阅读更多

没有更多推荐了,返回首页