Bom dia estou estudando programação em JAVA em Estrutura de Dados e estou com dificuldade para aplicar um Método em uma Classe Pilha criada;
Bom a Atividade é a seguinte;
Desenvolva para a classe pilha o método:
- ordenar()
Como resultado da execução do método ordenar teremos a pilha com seus dados ordenado, sendo o maior no topo e o menor na base.
Podes utilizar variáveis auxiliar, mas somente pilhas como estruturas “maiores” (não utilizar vetores e/ou arraylist).
Pelo que entendi posso usar os métodos empilhar e desempilhar ou em outras palavras inserir e retirar dados na pilha e manipulando eles criar novas estruturas de pilha pra ordenar de forma decrescente os dados na pilha .
Minha Classe Pilha Abaixo:
package EstruturaDeDadosI;
public class PilhaObjeto {
private Object item[];
private int topo;
private int tamanhoDaPilha; // Capacidade maxima
public PilhaObjeto() { // Cria uma Pilha vazia
this.tamanhoDaPilha = 1000;
this.item = new Object[1000];
this.topo = -1;
}
public PilhaObjeto(int TamMax) { //Cria uma Pilha vazia
this.tamanhoDaPilha = TamMax ;
this.item = new Object[TamMax];
this.topo = -1;
}
public Object empilha(Object novo) {
if (this.topo == (this.tamanhoDaPilha-1))// if (this.cheia())
{
return null;
}
this.item[++this.topo] = novo;
return novo;
}
public Object desempilha() {
if (this.vazia()) //if (this.topo == -1)
{
return null;
}
return this.item[this.topo--];
}
public Object doTopo() {
if (this.vazia()) //if (this.topo == -1)
{
return null;
}
return this.item[this.topo];
}
public boolean vazia() {
return (this.topo == -1);
}
public boolean cheia() {
return (this.topo == (this.tamanhoDaPilha-1));
}
public int qtd() {
return (this.topo + 1);
}
public int vagos() {
return (this.tamanhoDaPilha - (this.topo+1));
}
}
`package pilhas;
import EstruturaDeDadosI.;
import javax.swing.;
public class TestaPilha {
public static void main (String[] args) {
int i=0, max=5;
PilhaObjeto pilha = new PilhaObjeto (max);
Integer elemento = null;
java.util.Random random = new java.util.Random ();
pilha.empilha(-10);
System.out.println ("Quantos elementos estão na pilha "+ pilha.qtd());
System.out.println ("\n\n\t\tInserindo Elementos");
// Insere cada elemento na pilha
while (pilha.empilha(i*10) != null){
System.out.println ("Inserido na pilha: ("+pilha.doTopo()+") " +pilha.doTopo() +
" Quantos elementos estão na pilha "+ pilha.qtd());
i++;
}
System.out.println ("Tamanho da pilha: " + pilha.qtd());
System.out.println ("\n\n\t\tRetirando Elementos");
// Desempilha cada chave
elemento =(Integer) pilha.desempilha ();
while (elemento != null){
System.out.println ("Retirado na pilha: " + elemento +
" Quantos elementos estão na pilha "+ pilha.qtd());
elemento =(Integer) pilha.desempilha ();
}
System.out.println ("Tamanho da pilha: " + pilha.qtd());
/Comentário;
String Nome, Saida;
Nome = JOptionPane.showInputDialog(“Informe seu nome:”);
pilha.empilha(Nome);
Saida = (String)pilha.desempilha ();
// get the user’s input. note that if they press Cancel, ‘name’ will be null
System.out.printf(“Nome informado ‘%s’.\n”, Nome);
System.out.printf(“Nome informado ‘%s’.\n”, Saida);/
}
}
Gostaria de Ajuda para implementar esse Método ordenar() conforme especificado acima;agradeço desde já.
Abraço.
`