Pilha

olá companheiros estou com duvida nesse programa de pilha ainda não engrenei nessa matéria, gostaria q vcs me ajudassem,
desde já agradeço .Obrigado

Utilizando as operações de manipulação de pilhas, além de uma segunda pilha auxiliar, escreva uma função (remove_elemento) que remove um item com conteúdo igual a c (c é um dado do tipo inteiro) de uma posição qualquer de uma pilha. Lembre-se que você não tem acesso à estrutura interna da pilha, apenas às operações de manipulação.

Uma pilha é uma estrutura de dados que “funciona” de modo similar a uma pilha de pratos. O ultimo a chegar na pilha é o primeiro a sair.

Isso quer dizer que se você tem um pilha, e vai retirar elementos dela, você só vai conseguir retirar um a um, começando pelo topo. Não dá pra retirar um elemento de uma posição qualquer, como o enunciado pede.

Justamente por isso é que ele te dá a dica de usar uma pilha extra.

O que você precisa fazer é ir retirando os elementos da pilha de um a um, começando pelo topo e verificando se o elemento é aquele que você deseja.

Se não for, você armazena ele na pilha auxiliar. Quando encontrar, retira ela da pilha e retorna os outros da pilha auxiliar para a pilha principal.

O enunciado fala que você não tem acesso a implementação dos métodos da pilha justamente para você não tentar dar uma de espertinho e tentar alterar o funcionamento da pilha, ou adicionar um método capaz de retirar um elemento que não esteja no topo da pilha.
Afinal de contas, se você fizer isso sua estrutura de dados deixaria de fazer jus ao nome de “pilha”.

Veja se entendi, primeiro vou criar o programa principal para inserir dados na pilha , dps faço o método remove_elemento, e dentro da função principal vou chamar a função remove_elemento.

Obrigado

A ideia é que você tenha uma classe pilha, com todos os métodos que se referem a uma pilha implementados.

Como disse, você não deve ser capaz de remover um elemento de uma posição qualquer de uma pilha, portanto o método remove não deve ficar na classe Pilha.

Esse é um tipo exercício que os professores usam, para mostrar aos alunos que é possível obter o funcionamento de uma estrutura de dados que se deseja, utilizando uma outra estrutura de dados.

Um método removeElemento, capaz de remover um elemento da posição desejada, é interessante, por exemplo, numa estrutura de dados do tipo Lista.

Então, creio que seja interessante você fazer o seguinte:

Crie uma classe Pilha, e implemente seus métodos.

Então crie uma classe, por exemplo, Lista, e coloque um objeto do tipo Pilha como variável de instância nessa classe. Você vai usar essa pilha para armazenar os dados da lista.

Na classe lista, você implementa o método que remove um elemento uma posição enviada por parametro para o método.

Mas como você vai fazer isso, sendo que os dados estão armazenados numa pilha?

É nesse método que você vai instanciar uma Pilha auxiliar. Vai remover elementos da pilha principal, guardando-os provisoriamente na classe auxiliar, até que você encontre o elemento desejado. AO encontrar, você o retira da pilha, e então recoloca os elementos da pilha auxiliar para a pilha principal.

Vê se isso clareia: http://www.guj.com.br/posts/list/55235.java#289988

Obrigado pelas dicas…agora vou refletir e tentar entender…
Bom fim de semana vlw

aonde que vou guardar o valor da pilha principal?

…estou confuso…