欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

算法-用两个栈实现队列

程序员文章站 2022-07-10 18:56:14
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。import java.util.Stack;public class Solution { Stack stack1 = new Stack(); Stack stack2 = new Stack(); public void push(int node)...

题目描述

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

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.add(node);
        
    }
    
    public int pop() {
        if(stack2.isEmpty()) {//情况一 1、如果stack2为空
            while(!stack1.isEmpty()) {
            stack2.add(stack1.pop());//情况一 2、将stack1元素全部入栈stack2
            }
        }else{
                return stack2.pop();//情况二 stack2有元素就直接出栈
            
        }
        
        return stack2.pop();//情况一 3、stack2全部出栈
    }
}

思路:栈是先进的后出,队列是先进先出

push时先让所有元素进stack1,pop时,判断stack2是否有元素,没有,就将stack1元素全部出栈到stack2,然后stack2出栈,有元素就直接出栈 (如果stack2有元素,那么stack1一定没有元素)

本文地址:https://blog.csdn.net/qq_45100361/article/details/107687749

相关标签: 队列