Programação  
 
Rede de conhecimento computador >> Programação >> Programação em Java >> Content
Como posso implementar uma pilha baseada em matriz em Java?
A implementação de uma pilha baseada em matriz em Java envolve o uso de uma matriz para representar a estrutura da pilha. Usaremos um min-heap como exemplo (menor elemento da raiz), mas os princípios são os mesmos para um max-heap.

Aqui está uma implementação de Java de um min-heap, incluindo métodos de inserção, extração do elemento mínimo e operações Heappify:

`` `Java
classe pública MINNHEAP {
private int [] heap;
Tamanho privado int;
Capacidade privada int;

public MINNHEAP (INT Capacidade) {
this.Capacity =Capacidade;
this.heap =new int [capacidade + 1]; // O índice 0 não é usado
this.size =0;
}

public boolean isEmpty () {
tamanho de retorno ==0;
}

public boolean isfull () {
tamanho de retorno ==capacidade;
}

private int parent (int i) {
retornar i / 2;
}

private int esquerd (int i) {
retornar 2 * i;
}

private int certo (int i) {
retornar 2 * i + 1;
}

troca de vazio privado (int i, int j) {
int temp =heap [i];
heap [i] =heap [j];
heap [j] =temp;
}

public void insert (int key) {
if (isfull ()) {
lançar novas ilegalstateException ("Heap está cheio");
}
tamanho ++;
heap [size] =chave;
int i =tamanho;
while (i> 1 &&heap [parent (i)]> heap [i]) {// Propriedade min-hap
troca (i, pai (i));
i =pai (i);
}
}

public int extractMin () {
if (isEmpty ()) {
jogue nova ilegalStateException ("Heap está vazio");
}
int root =heap [1];
heap [1] =heap [size];
tamanho--;
heapify (1);
ROOT ROOT;
}


private vazio heapify (int i) {
int menor =i;
int l =esquerda (i);
int r =certo (i);

if (l <=size &&heap [l] menor =L;
}
if (r <=size &&heap [r] menor =r;
}

if (menor! =i) {
trocar (i, menor);
heapify (menor);
}
}

public void Primtheap () {
for (int i =1; i <=size; i ++) {
System.out.print (heap [i] + "");
}
System.out.println ();
}

public static void main (string [] args) {
MINHEAP MINNHEAP =novo MINHEAP (10);
mineap.insert (3);
mineap.insert (2);
mineap.insert (15);
mineap.insert (5);
mineap.insert (4);
mineap.insert (45);

System.out.println ("MINHEAP Array:");
mineap.priripation ();

System.out.println ("Extract min:" + minhap.extractmin ());
System.out.println ("Após extrair min:");
mineap.priripation ();

}
}
`` `

Este código inclui:

* Construtor: Inicializa a matriz de heap com uma determinada capacidade. Observe que o índice 0 não é usado.
* `isEmpty ()` e `isfull ()`: Verifique o estado da pilha.
* `parent ()`, `esquerda ()`, `right ()`: Helper funciona para obter os índices dos nós pais e filhos.
* `swap ()`: Troque dois elementos na matriz.
* `insert ()`: Insira um novo elemento na pilha, mantendo a propriedade Min-Heap.
* `extractmin ()`: Remove e retorna o elemento mínimo (raiz), mantendo a propriedade Min-Heap usando `heapify ()`.
* `heapify ()`: Restaura a propriedade Min-Heap após a remoção ou inserido um elemento. Ele compara recursivamente um elemento com seus filhos e swaps, se necessário.
* `PRINTHTHEAP ()`: Uma função auxiliar para demonstração.


Lembre -se de lidar com possíveis exceções, como tentar extrair de uma pilha vazia ou inserir em uma completa. Este exemplo usa valores inteiros; Você pode adaptá -lo facilmente a outros tipos de dados usando um parâmetro de tipo genérico. Para montes maiores, considere usar uma estratégia de redimensionamento mais sofisticada para evitar a limitação da capacidade fixa.

Anterior :

Próximo :
  Os artigos relacionados
·Como definir o tamanho do JTextField 
·Como acessar banco de dados Oracle Usando Programação…
·Como copiar fluxos de saída de entrada em Java 
·Como detectar caracteres de vários bytes em Java 
·Como fazer um objeto se mover continuamente em Java 
·Como atualizar uma matriz de cadeia em Java Dynamic 
·Como Fator inteiros em Java 
·Qual é a classe String no Java 
·Como é possível que o mesmo programa Java possa ser e…
·Como inverter Pixels em Java Com getPixel 
  Artigos em destaque
·Características do Turbo C 
·Como editar um objeto ListView em Visual Basic 
·Como contar Funções em C Código 
·Como passar dados entre documentos do Word usando o VBA…
·Como criar Distribuidores e arquivos OBJ em C + + 
·Como fazer uma ordenação por inserção em Python 
·Como usar o VBA para converter CSV para XLS 
·Como colocar um Programa Sub Em Visual Basic 6.0 
·Como remover caracteres de uma cadeia em Python 
·Como criar Data Dimensões em MySQL 
Cop e direita © Rede de conhecimento computador https://ptcomputador.com Todos os Direitos Reservados