Java usa dos pilas para implementar una cola para completar las operaciones Push y Pop de la cola

Utilice dos pilas para implementar una cola para completar las operaciones Push y Pop de la cola. Los elementos de la cola son de tipo 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.push(node);
    }
    
    public int pop() {
        /**
         * if(stack2.isEmpty())作用: 在stack1没有完成弹出所有元素前,不进行入栈操作
         * ["PSH1","PSH2","PSH3","POP","POP","PSH4","POP","PSH5","POP","POP"]
         * 前3次 push方法 stack1 {1,2,3} 入栈的存储顺序是{3,2,1}
         * 第4次 pop方法  stack1 出栈的顺序是{3,2,1},然后将{3,2,1}进行压栈,押入stack2中,stack2中存储顺序是{1,2,3},弹出1
         * 第5次 pop方法  stack1为空,不走括号里面逻辑,直接弹出2 stack2里还剩下{3}
         * 第6次 push方法 stack1压入{4}
         * 第7次 pop方法  stack1不为空,进入括号逻辑,压入stack1 {4,3} 弹出4 问题出现,预期是队列的出栈顺序 应该是 1 2 3 4 此时出栈的顺序是1 2 4,执行到这里就已经错误逻辑了
         * 
         */
        if(stack2.isEmpty()){
            while(!stack1.isEmpty()){
                int val = stack1.pop();
                stack2.push(val);
            }
        }
        
        return stack2.pop();
    }
}

 

Supongo que te gusta

Origin blog.csdn.net/luzhensmart/article/details/112540800
Recomendado
Clasificación