Lista circular duplamente encadeada

Estou com duvida em como adicionar um elemento numa lista dupla cirular em que depois terei que remove-los até restar apenas(problema Josephus) poderiam me da uma ajuda

Eis minha classe node

    package josephus;

    public class Node {
       int info;
       Node proximo;
       Node anterior;

       Node(int dado){
         this.info = dado;
         this.proximo = null;
         this.anterior = null;
       }
    
        Node(int dado, Node next, Node anterior){
           this.info = dado;
           this.proximo = next;
           this.anterior = anterior;
}
    
        public int getDado(){
           return info;
        }
    
        public void setDado(int dado){
           info = dado;
        }
    
        public Node getProximo(){
           return proximo;
        }
  
        public void setProximo(Node prox){
           proximo = prox;
        }
  
        public Node getAnterior(){
           return anterior;
        }
  
        public void setAnterior(Node ant){
           anterior = ant;
        }
}
 
 
comecei a criar o metodo que insere mais não estou obtendo exito, se puderem ajudar agradeço
 
public class Soldado {
    
    public Node cabeca;
    public Node cauda;
    
    
    
    public Soldado(){
        cabeca = cauda = null;
        
    }
    
    public void insere(int n){
        if(cabeca == null)
            cabeca = cauda = new Node(n);
        else
            cabeca = cabeca.proximo = new Node(n, cabeca, cauda

Formata o código direitinho pra ajudar os outros a entenderem o problema?

Aí, não conheço esse disco chamado “FullHD” do Led! É pirata?

pronto acho que agora ficou melhor para entender, desculpe