Informática, perguntado por hugotu, 11 meses atrás

Implementar uma lista encadeada circular em Java?

Soluções para a tarefa

Respondido por rayllecn
0

Java é uma linguagem de programação muito completa e amplamente utilizada, apesar de não ter uma sintaxe tão facilmente compreendida com Python, que também é orientada a objetos.

Quando montamos uma lista circular em java, não iremos lidar com alguns nós, como o primeiro e o ultimo. O mesmo acontece com as listas simplesmente encadeadas e as listas duplamente encadeadas. Assim, utilizaremos sentinelas de cabeçalho e de rodapé, porém, como trata-se de uma lista circular o último elemento possui como próximo o primeiro elemento.

Portanto, para percorrermos uma lista circular precisamos definir um tipo de cursor, que é um (elemento) corrente na lista.  Isso pode ser melhor observado no código abaixo, nele a estrutura de dados já está definida.

public class CircleList {  

   private Node cursor;

   private int size;

     

   public CircleList() {

       cursor = null;

       size = 0;

   }

   public int size() {

       return size;

   }

     

   public Node getCursor() {

       return cursor;

   }

     

   public void advance() {

       cursor = cursor.getNext();

   }

     

   public void add(Node v) {

       if (cursor == null) {

           v.setNext(v);

           cursor = v;

       } else {

           v.setNext(cursor.getNext());

           cursor.setNext(v);

       }

       size++;

   }

     

   public Node remove() throws IllegalArgumentException {

       if (cursor == null)

           throw new IllegalArgumentException("lista vazia");      

       Node aux = cursor.getNext();

       if (aux == cursor)

           cursor = null;

       else {

           cursor.setNext(aux.getNext());

           aux.setNext(null);

       }

        size--;

       return aux;

   }

}

Espero ter ajudado, bons estudos :)


hugotu: obrigado
Perguntas interessantes