Resolucão exercicio java

5 respostas
só-o-enunciado
J

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
	}
	
}

5 Respostas

Lucas_Camara

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

J

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

Fefo80

E o que você já fez?

J

Não consegui fazer

Lucas_Camara

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).

Criado 26 de julho de 2021
Ultima resposta 27 de jul. de 2021
Respostas 5
Participantes 3