[RESOLVIDO] Tipo de dados abstrato(pilha fila lista)

9 respostas
gpd38
Queria a ajuda de vcs para fazer o metodo cresce() de uma fila.

O esta metodo faz.

Ao enfileirar um elemento eu olho o tamanho da fila.

Se a fila estiver cheia crio uma nova fila com o dobro da anterior, passo todos os elementos para a nova fila e continuo trabalhando com os elementos.

public void cresce()

{

}
Não consegui fazer funcionar, por isso pesso ajuda.

A miha esta deste jeito:

public void cresce()

{

int novotamanho = armazem.length * 2;

int novo[] = new int[novotamanho];
for(int i=0;i<armazem.length;i++)
     {
        novo[i] = armazem[i];	
     }//fim for(int i=0;i<old.length;i++)
     
     armazem = novo;
     
  }//fim metodo cresce()

9 Respostas

ViniGodoy

Olá! Seja bem-vindo ao GUJ.

Antes de tudo, dê uma lida nesse artigo que vai te ensinar a maneira correta de postar código, além de outros recursos do fórum.

Não entendi exatamente qual o seu problema. Seu método me parece correto. Eu só trocaria a cópia manual do array pelo método System.arrayCopy.

public void cresce() {
   int novotamanho = armazem.length * 2;
   int novo[] = new int[novotamanho];

   System.arrayCopy(armazem, 0, novo, 0, novo.length);
   armazem = novo;
}//fim metodo cresce()
gpd38

Valeu pela ajuda do artigo.
Vou le-lo com mais calma.

Tenho que fazer uma Fila que será implementada por uma fila de prioridade maxima, ou seja nessa implementação terei que colocar o metodo que retorna neste meu caso o maior elemento. (Isso ja esta OK).

O “problema é o seguinte”.

ERRA PROBLEMA.

Consegui achar o erro.
Tinha em uma mesma pasta duas classes.

  • Uma Fila.java e outra FiladePrioridade.java

Em um certo metodo meu ele estava fazendo referenia a Fila.java e não a de Prioridade, por isso que a resposta dava errado.

Valeu a ajuda.

gpd38

Tenho agora um novo problema.

Tenho que fazer um programa em java que seria como um interpretador, ou seja, pego um programa em txt leio e tenho que executar os comando la pedidos.

Tem ideia de como posso tratar os eventuais erros como por exemplo:
metodo recursivo, ou if dentro de if, operações na ordem correta * e / — + e -.
Qual seria a melhor estrutura de usar?
Vetor + pilha – Pilha + Fila – Fila + Lista
Vetor + Fila – Pilha + Lista
Vetor + Lista
Não necessariamente precisa ser toda em fila ou lista ou fila, mas tenho que usar uma destas em algum metodo.

Este programa é o mesmo caso de um controlador de voo.

Olhe o programa txt abaixo…

[quote]
funcao f1 r1
var i2
i2 = 3
r1 = i2 * 24 + 35
r1 = r1 / 2
oacnuf

funcao f2 r1 r2 r3
r1 = r2 * r3 / 2
oacnuf

inicio
var i1 r1 r2 R1

ler i1
r1 = 3.14

se i1 == 0
r1 = f1
es

r2 = 1
repetir i1 < 10
var i2
i2 = 9876
r2 = f2 r1 r2
riteper

escrever r2
fim

ViniGodoy

Se vai fazer um interpretador, use o antlr.

Existe um editor de textos que usa o antlr para fazer syntax coloring implementado aqui:
http://www.guj.com.br/posts/list/48736.java

gpd38

Valeu, vou olhar este interpretador ou como faze-lo.
Como eu faço em java o enfileirar e o desenfileirar com referencia.

Olha o meu como esta:

public int desenfileirar() {
      
         if (estaVazia())
            throw new RuntimeException(" Impossivel retirar elemento: FILA VAZIA ");
      
         int resultado = inicio.valor;
         inicio = inicio.prox;
      
         if (inicio == null)
            fim = null;
      
         return resultado;
      
      }// fim desenfileirar
public void enfileirar(int valor) {
       
         Celula nc = new Celula (valor);//chama o cosntrutor e passa o valor para a celula
                                        // nc =  nova celula
         Celula aux = nc;//guarda a celula "original"
         
         if (inicio == null)
            fim = inicio = nc;
         else{
            inicio = aux;      
            fim = nc;
            size++;
         }//fim if
      }//fim enfileirar
gpd38

Agradeço a sua colaboração…
Com relação a ultima postagem, podem deixar.
Consegui resolver, valeu

gpd38

O que eu preciso importar para o System.arrayCopy() funcionar no me programa.

gpd38

Gostaria de saber como faço a uniao entre duas Listas com referencia criadas em java . O problema é que as duas primeiras podem ter numeros iguais, mas a uniao entre elas não…

Como resolvo este problema?

ViniGodoy

Você escreveu as listas, ou está usando a classe LinkedList do próprio Java?

Se for a LinkedList, basta fazer:

//Remove todos os elementos na list2 que estão presentes na list1.
list2.removeAll(list1);

//Adiciona os remanecentes na list1.
list1.addAll(list2);
Criado 17 de março de 2007
Ultima resposta 26 de mar. de 2007
Respostas 9
Participantes 2