Ir ao conteúdo
  • Cadastre-se
Logan Angel

Fila, pilha e deck - como entender o funcionamento?

Recommended Posts

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.

Compartilhar este post


Link para o post
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)

Compartilhar este post


Link para o post
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: )

Compartilhar este post


Link para o post
Compartilhar em outros sites

@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. 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×