Ir ao conteúdo
  • Cadastre-se

Fila, pilha e deck - como entender o funcionamento?


Posts recomendados

Estou cursando computação e chegamos na parte de filas, pilhas e decks, e como em qualquer universidade pública, o assunto é jogado em nossa cara, um monte de slides com códigos e mais códigos complicados são passados, mas nenhuma explicação de funcionamento ou analogia é dada de modo que possamos compreender o funcionamento dessas funções. Sair de um simples System.out.println("Hello World!"); e me exigir um deck é, no mínimo, uma falta de noção da parte de um professor que, indagado, só responde redundâncias que não ajudam.

Os colegas mais experientes poderiam me ajudar a entender o funcionamento de uma fila, pilha e deck. Busquei vídeos no Youtube mas lá também só entopem de códigos, eu gostaria de compreender como funcionam esses códigos. Não quero que façam minha atividade, peço que me ajudem a entender como ela funciona pra que assim eu possa criar meu próprio código.

PS.: Minha dúvida se faz em relação ao código em si, não sobre as diferenças de fila, pilha e deck, como onde entra ou sai um elemento por exemplo, quero saber sobre o código mesmo. Por qual motivo é escrito de tal forma, por que motivo é estruturado assim, como deve ser feito para que ele crie a fila (ou pilha, ou deck) e como ela é editada. Grato.

Link para o comentário
Compartilhar em outros sites

A melhor forma de se entender, é tentar jogar o conceito para o mundo real. Então vamos começar com fila.

No banco, temos uma fila. Se existem 3 pessoas na fila, e você entrar após elas, você só será atendido após as 3 pessoas terem sido atendidas. Com isso temos o conceito FIFO (First In First Out - Primeiro a entrar na fila é o primeiro a sair) ... fila serve para que você possa manter na estrutura a ordem de entrada dos dados ... Pensando agora com programação, você precisaria guardar na saída da estrutura as informações da posição do primeiro da fila e do último ... assim você sabe qual a posição do próximo a ser retirado e qual a posição do próximo a ser inserido ...

 

o Deque é uma fila. Porém tem um comportamento diferente, pois você pode remover tanto o primeiro quanto o último elemento que entrou. é a única diferença dessa estrutura para a Fila.


Sobre pilhas, nada melhor como uma pilha de pratos. Pela facilidade, você sempre vai pegar o prato de cima da pilha, que normalmente foi o último a ser colocado e, sendo assim, o último prato a ser utilizado é o primeiro que foi colocado e que está embaixo de toda a pilha de pratos. E então o conceito de FILO (First In Last Out - Primeiro a entrar na pilha é o último a sair) ... A pilha funciona de uma forma completamente contrária a fila, onde você quer "inverter" na saída da estrutura a ordem de entrada dos dados ... Pensando em programação, na estrutura você precisaria saber sempre a posição do último (topo) da pilha para poder inserir um novo elemento, ou remover o último. 

Agora o problema ... pensar nisso computacionalmente, o ideal é que você tenha um ótimo domínio sobre Listas (arrays) ... assim você conseguirá entender facilmente como implementar uma ... (Lembre-se, o importante é saber o conceito e como empregá-lo. Existe várias formas de se implementar uma estrutura de dados)

Link para o comentário
Compartilhar em outros sites

@psykotico Obrigado por dispor seu tempo, isso tudo é exatamente o que eu já sei, o que eu estou querendo entender é sobre o funcionamento do código em si, por qual motivo ele é escrito da forma que é, por qual motivo preciso criar classes diferentes para fazer as inserções, exclusões, buscas e etc dentro de minhas filas, pilhas ou decks, isso não é explicado, só fazem botar uma foto de uma pilha de pratos e depois entopem códigos na tela, que para mim, que não sei de quase nada, não fazem o menor sentido.
Obrigado pela dica do array, irei procurar sobre isso, estou com o livro "use a cabeça java" mas está sendo inútil (quiseram facilitar tanto as coisas que nem o nome dos assuntos eles colocaram, estou tendo de ler folha por folha a fim de achar o conteúdo, pois no índice eu só encontro: como pegar um táxi assobiando, pagina tal, como dar banho no cachorro sem o cachorro, pagina tal. wtf isso lá é índice!? :atirador: )

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Logan Angel Olá, como deram uma resposta teórica, deixo aqui dois links que explicam a teoria em códigos. 

 

https://www.caelum.com.br/apostila-java-estrutura-dados/filas/#7-1-introducao

http://www.devmedia.com.br/pilhas-fundamentos-e-implementacao-da-estrutura-em-java/28241

 

Leia com atenção e perceba as linhas de comentários nos códigos, que contém boas explicações. 

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...