Conversión mutua de algoritmos entre pila y cola


Dado que ambos métodos son muy simples, no diré más aquí

1. Dos pilas implementan una cola

     class MyQueue{
    
    
        private Stack<Integer> input;
        private Stack<Integer> output;

        public MyQueue() {
    
    
            input =new Stack<>();
            output = new Stack<>();
        }

        public void offer(int val){
    
    
            input.push(val);
        }
        public int poll(){
    
    
            if(isEmpty()){
    
    
                throw new IndexOutOfBoundsException();
            }
            if(output.size()==0){
    
    
                while (input.isEmpty()==false){
    
    
                    output.push(input.pop());
                }
            }
            return output.pop();
        }
        public boolean isEmpty(){
    
    
            return input.isEmpty()&&output.isEmpty();
        }

    }

2. Pila de implementación de la cola

    class MyStack{
    
    
        private Queue<Integer> queue;
        private int count=0;
        public MyStack() {
    
    
            queue=new LinkedList<>();
        }

        public void offer(int val){
    
    
            queue.offer(val);
            for (int i=0;i<count;i++){
    
    
                queue.offer(queue.poll());//队列头插到队列尾,队尾便队头
            }
            count++;
        }
        public int poll(){
    
    
            if(isEmpty()){
    
    
                throw new IndexOutOfBoundsException();
            }
            count--;
            return queue.poll();
        }
        public boolean isEmpty(){
    
    
            return queue.isEmpty();
        }
    }

Supongo que te gusta

Origin blog.csdn.net/qq_23594799/article/details/105493243
Recomendado
Clasificación