Pilha Estrutura de Dados Manipulação

1 resposta
desenvolvimentoalgortimoorderprogramaçãojava
G
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());
/<em>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);</em>/

}

}

Gostaria de Ajuda para implementar esse Método ordenar() conforme especificado acima;agradeço desde já.
Abraço.
`

1 Resposta

L

Dá uma olhada nesse método:

https://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html#sort-java.lang.Object:A-int-int-

Usa ele assim:

Object[] array = ...; //no caso aqui é o da tua pilha
Arrays.sort(array, 0, topo); // ordena os objetos dentro do array, do índice 0 até o índice topo (onde estão os objetos da sua pilha)

Detalhe: a documentação diz que os objetos precisam implementar a interface Comparable, para que a comparação possa ser feita.

Criado 10 de março de 2017
Ultima resposta 10 de mar. de 2017
Respostas 1
Participantes 2