Resolucão exercicio java

Transforme a classe em uma lista encadeada circular. Mantenha a política de inserção e remoção de elementos.

Faça comentários no código sobre os novos métodos e atributos criados.

Implemente um método que inclua um elemento no meio da lista (exatamente entre os elementos no meio da lista).

Você deve implementar o método printAll que mostra todos os elementos da lista em sequência, começando no primeiro elemento e terminando no último.

Codigo disponibilizado

public class ListaAvaliacao {

	private Nodo head;
	private Nodo tail;
	
	private class Nodo {
		Integer dado;
		Nodo proximo;
	}
	
	public ListaAvaliacao() {
		this.head = null;
		this.tail = null;
	}
	
	public void inserir(int valor) {
		Nodo novo = new Nodo();
		novo.dado = valor;
		if(head == null) {
			novo.proximo = head;
			head = novo;
			tail = head;
		} else {
			novo.proximo = head;
			head = novo;
		}
		
	}
	
	public Integer remover() {
		if (this.head == null) return null;
		
		Nodo retirado = this.tail;
		
		if (this.head == this.tail)
			this.head = this.tail = null;
		else {
			Nodo temp = this.head;
			while (temp.proximo != this.tail) {
				temp = temp.proximo;
			}
			this.tail = temp;
			temp.proximo = null;
		}
		return retirado.dado;
	}
	
	public void printAll() {
		// TODO: Apresentar todos os elementos na ordem que aparecem, do início ao final
	}
	
}

Vc está só postando a resposta do exercicio? Não entendi sua dúvida.

Não, o exercício é transformar aquela classe em uma lista encadeada circular, além de realizar os métodos solicitados

E o que você já fez?

Não consegui fazer

Se não me engano, para vc fazer ela circular, o nó (Nodo, o seu caso) deve também armazenar a referência do Nodo anterior. Vc pode começar fazendo essa mudança. Ao inserir um novo nó, vc deve guardar a referência para o nó anterior de acordo com o nó que está sendo inserido:

[ (#1: 5, 2) , (#2: 1, 3) , (#3, 2, 4) , (#4: 3, 5) , (#5: 4, 1) ]

// #1, #2, #3, #4 e #5 são os nós da lista
// Os números depois dos 2 pontos são o anterior e o próximo, respectivamente

Ou seja, o primeiro nó, possui a referência do último (tail) nó (#5) e do próximo (#2), assim como o último nó possui referência para o primeiro (head) (#1) assim como o anterior (#4). Isso que é uma lista circular encadeada.

Tente implementar essa lógica no método inserir (tem que dá uma queimada nos neurônios pra conseguir fazer isso viu).