@javaflex, a dúvida aqui é como fazer essa lista de tamanho 5 com 5 elementos se portar como uma pilha e depois como fila. so isso
Entendo que pra quem inicia acha que é “só isso”. Isso é bem abrangente, tem que estudar sobre estrutura de dados antes. Se pesquisar no google vai encontrar muito conteúdo e até aulas.
Sei o que é lista, Stack, Queue e como se comportam o problema é aplicar isso kk
Sei que o sistema de ensino costuma ser ruim, mas nao tem jeito, busque conteúdos na internet. Na minha época nem tinha essas facilidades de google e eu tinha que ir pra biblioteca física.
Concordo. Eu já faço isso. Eu ainda tenho 4 dias para entregar essa atividade, uma hora ou outra eu consigo.
Consegue, é fácil achar tutoriais ensinando esses assuntos, a exemplo do que o colega citou. Depois que tentar e tiver algum problema específico na execuçao do seu código, fique livre para postar dúvidas.
Sugestão de bibliografia: Java Como Programar 8, Cap. 22 - Estruturas de Dados Genéricas Personalizadas, pág. 695 - 714.
697 - Listas Vinculadas;
704 - Pilhas;
707 - Filas;
709 - Árvores.
Pelo que entendi do seu exercicio, não é preciso implementar uma lista, uma pilha e uma fila do zero.
Parece que vc só precisa observar como cada estrutura se comporta, neste caso podemos usar as ferramentas que o Java nos oferece.
Lista
Para representar a lista, vc pode usar um java.util.ArrayList
:
// Cria lista com capacidade para 5 elementos
ArrayList<Integer> lista = new ArrayList<>(5);
Para adicionar elementos, usa-se o método add()
, da seguinte forma:
// Adiciona 1 ao final da lista
lista.add(1);
Para remover os elementos da lista, vc pode usar o método remove()
. O código abaixo remove o primeiro elemento da lista:
// remove o primeiro elemento
lista.remove(0);
Para remover todos, um por um, como pede o exercicio, vc pode usar o remove()
dentro de um while
:
// Enquando lista não estiver vazia
while(!lista.isEmpty()) {
// Remova o primeiro elemento
int elemento = lista.remove(0);
}
Pilha
Tanto para a pilha quanto pra fila, vc pode usar a classe ArrayDeque
. Vamos focar aqui na função de pilha.
Obs.: O Java possui a java.util.Stack
, mas a documentação recomenda usar implementações de java.util.Deque
como a ArrayDeque
mencionada aqui.
Eis um trecho da documentação:
A more complete and consistent set of LIFO stack operations is provided by the Deque interface and its implementations, which should be used in preference to this class. For example:
O trecho abaixo mostra como criar a estrutura, adicionar e remover elementos:
// Cria deque com capacidade para 5 elementos
ArrayDeque<Integer> pilha = new ArrayDeque<>(5);
// Insere 1 no topo da pilha
pilha.push(1);
// Enquando pilha não estiver vazia
while(!pilha.isEmpty()) {
// Remove o elemento do topo da pilha
int elemento = pilha.pop();
}
Fila
Vamos usar a mesma classe anterior para representar uma fila, o que diferenciará o comportamento serão os métodos que usaremos, veja:
// Cria deque com capacidade para 10 elementos
ArrayDeque<Integer> fila = new ArrayDeque<>(10);
// Insere 1 no fim da fila
fila.add(1);
// Remove o elemento do inicio da fila
int elemento = fila.remove();
Cara muito obrigado, isso vai me ajudar bastante , eu tenho uma outra dúvida, será que da para fazer isso tudo em um só processo? ou é necessário tipo criar um projeto, no caso eu uso o NetBeans, e depois criar outras 2 classes que vão interagir com a classe principal? ou da pra fazer isso em uma só estrutura ?
Você pode fazer do jeito que achar melhor, o importante é vc conseguir visualizar e descrever o que aconteceu. Eu faria numa classe só, pra manter simples.
ok, também prefiro. Obrigado
man eu to fazendo essa atv agora cara e tambem estou com as mesmas duvidas que voce! estou nela desde as 9 da manha rsrs ja vi diversos videos mais ainda não consigo resolver essa questão!
É isso que eu tbm quero saber … No caso a atv pede pra nos criarmos uma lista com 5 celulas… e depois “remover” os dados da lista e enseri-las em pilhas com 5 celulas deve-se sempre remover os dados da celula inicial da lista e depois remover os dados da pilha e enserir em uma fila com 10 celulas…
Pelo que eu entendi a atv pede pra criarmos 3 tipos de estruturas passando de uma pra outra ? e quando eles pedem pra remover os dados da lista é apagar literalmente os numeros ? e deixa-la em branco ? Pra no final sobrar apenas a fila com 10 celulas contento os dados que foram passados da pilha ?
Poxa eu achei essa atv muito complexa pra quem está apredendo agora estrutura de dados! alguem da uma base ai PFV
Exatamente, pelo menos foi o que eu entendi.
Sim e sim.
Além da fila, vc vai ficar com uma lista e uma fila vazias.
Sim. Mas é só o primeiro passo.
Man tu não quer me passar seu zap pra nós tentarmos resolver essa atv juntos ?