Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Blade Skywalker

Substituto para referencias a memoria

Recommended Posts

Olá todos.

 

Estou precisando de uma ajudinha para implementar uma operação em java. Primeiramente permitam-me postar meus códigos:

 

public class No {
	
	No prox;
	int valor;
	int freq;
	
	public No(int valor) {  
		this.valor = valor;
		this.freq = 0;
		
	}
	

}

 

public class Lista {
	
	No primeiro, ultimo;
	
	public Lista() {
		primeiro = null;
		ultimo = null;
		
	}
	
	void Insere(No novo) {		
		
		if(primeiro == null && ultimo == null) {
			primeiro = novo;
		}
		else {
			ultimo.prox = novo;
		}
		ultimo = novo;
		
	}

Eu desejo implementar uma função AdicionaFrequencia(int valor) onde ele irá percorrer a lista, encontrar o No com o valor indicado e somar +1 a sua frequencia. Não é possivel remover e reinserir o nó (pois a complexidade do algoritmo ficaria muito alta). Em C eu sei que poderia usar ponteiros para referenciar o endereço da memoria na qual o nó está localizado, mas não tenho muitas ideias de como se fazer isso em Java.

Agradeço antecipadamente!

 

EDIT: Eu ia usar listas duplamente encadeadas para ir até o nó e voltar, mas mesmo assim a complexidade ainda fica alta!

 

EDIT2: Eu encontrei a solução. Bem... na verdade eu estava confundindo aritimetica de ponteiros em C com java. Mas obrigado pelas respostas!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não testei o código abaixo mas a ideia é mais ou menos essa:

 

AdicionaFrequencia(int valor){
	No aux = primeiro;
	while(aux!=null){
		if(aux.valor == valor){
			aux.freq+=1;
			break;
		}
		aux = aux.prox;
	}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.