TypechoJoeTheme

Toasobi的博客

用两个栈实现队列(简单)

本文最后更新于2023年03月03日,已超过566天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!


这题我就是正解!
要注意LinkedList也可以当做栈使用,速度还比stack还快嘞

<div>
class CQueue {
    LinkedList<Integer> stack1;
    LinkedList<Integer> stack2;
    public CQueue() {
        stack1 = new LinkedList(); //输入栈
        stack2 = new LinkedList(); //输出栈
    }
    
    public void appendTail(int value) {
        stack1.push(value);
    }
    
    public int deleteHead() {
        if(stack1.isEmpty()){ //stack1为空
            if(stack2.isEmpty()){
                return -1;
            }
            return stack2.pop();
        }else{ //stack1不空
            if(stack2.isEmpty()){
                while(!stack1.isEmpty()){ 
                    //全部进入栈2
                    stack2.push(stack1.pop());
                }
                return stack2.pop(); //栈2弹出1个
            }
            else{
                return stack2.pop(); //栈2弹出1个
            }
        }
        
    }
}
</div>
朗读
赞(0)
评论 (0)