Fila com prioridade

4 respostas
Milk15

Oi pessoal, eu gostaria de saber se alguém poderia me ajudar com esse probleminha de estrutura de dados:

Eu tenho uma classe FilaArray em que é uma fila em array, e eu tenho que transformá-la em uma fila com prioridade:

Ex:
Fila normal - inserir(C), inserir(B), inserir(D), inserir(A). Quando eu imprimir a fila ela estará CBDA.

Fila Prioritaria - inserir(C,1), inserir(B,2), inserir(D,0), inserir(A,4); Quando eu imprimir a fila ela estará ABCD.

Método inserir em FilaArray:
public boolean inserir(Object dado) {
		if (cheia())
			return false;
		
		if (vazia()){
			this.fila[0] = dado;			
		}
		else {
			if (this.tamanho < this.fila.length){
				this.fim = avancarIndice(this.fim);
				this.fila[fim] = dado;
			}
		}
		
		this.tamanho++;
		return true;
	}
No caso eu teria que editar esse método, que quando eu inserir na fila, tenho que primeiro verificar as prioridades de cada elemento da fila, pra saber onde devo inserir o novo elemento A minha pergunta é: Como eu vou guardar as prioridades para cada elemento (dado) da lista ? teria que colocar as respectivas prioridades em um array auxiliar? (Lembrando que não posso usar nenhuma das classes prontas do Java como Queue, PriorityQueue);

Se puderem me ajudar agradeço =)

4 Respostas

nel

Quanto maior o número, maior a prioridade, é isso ?
Uma matriz não resolveria seu problema ? Podes guardar na linha o valor e na coluna a prioridade, ou vice-versa.

Disse não poder usar classes do Java, fala somente das referentes as filas, como a Queue que citou ou todas ?
Porque um Map resolveria essa questão, acredito eu.

romarcio

Matriz seria a opção se não pode usar outras classes mais sofisticadas.

Milk15

Isso msm, quanto maior o número maior a prioridade, se 2 tiverem a mesma prioridade o que foi inserido depois fica na frente do que foi inserido antes, vou tentar ver se uma matriz é uma boa solução :slight_smile:

saoj

Isso não é um problema muito simples. Recomendo usar a java.util.PriorityQueue e/ou olhar o código fonte.

Criado 26 de abril de 2012
Ultima resposta 26 de abr. de 2012
Respostas 4
Participantes 4