Recentemente, revisei a estrutura de dados e implementei a pilha sozinho. Uma pilha é um tipo de tabela que restringe a inserção e a exclusão de apenas uma posição. As operações mais básicas estão dentro e fora da pilha, por isso também é chamado de tabela "Primeira entrada e saída".
Primeiro, vamos entender o conceito de pilha:
Uma pilha é uma tabela linear que limita as operações de inserção e exclusão apenas no cabeçalho da tabela. Às vezes, também é chamado LIFO (mais recente na tabela de primeira saída). Para entender esse conceito, você deve primeiro entender o significado original de "Stack", para que você possa entender a essência.
"Stack" significa um local onde as mercadorias são armazenadas ou os passageiros podem ser estendidos a um armazém ou uma estação de trânsito. Portanto, é introduzido no campo do computador, que se refere ao local onde os dados são temporariamente armazenados, portanto, há um ditado que ele entra na pilha e sai da pilha.
O método de implementação é o seguinte: Primeiro defina uma interface e, em seguida, implemente uma pilha linear e uma pilha de corrente nessa interface. O código é relativamente simples, como segue:
pacote com.peter.java.dsa.interfaces;/*** Definição de operação da pilha** @Author Peter Pan*/Public Interface Stack <T> {/* consulta vazia*/boolean isEmpty ();* sTACK*/void clear ();/* bull stack*/t pop ();/* Enter Stack*/boole o elemento na parte superior da pilha, mas não remove -a*/t Peek ();/*Retorne a posição do objeto na pilha*/int pesquisa (t dados t);}Pilha linear: implementada em uma matriz.
pacote com.peter.java.dsa.common; importar com.peter.java.dsa.interfaces.stack;/** * pilha linear * * @author Peter Pan */public linearstack <t> implementa [] private (]; Boolean isEmpty () {// TODO Método de auto-generado Tamanho do teatro == 0;}@Substituir public void clear () {// TODO Método Auto-Generado StubFor (int i = 0; i <t.Length; 0) {return null;} t tmp = t [size-1]; t [tamanho-1] = nulo; tamanho-; retorna tmp;}@substituir public boolean push (t data) {// tudo-generated método {threel); Método gerado automaticamente, tamanho de teatro;}@substituir public t peek () {// TODO Method Auto -Gerated Stubif (size == 0) {return null;} else {return t [size 1];}}}/ * Índice de dados, retornar -1 se não houver dados */@@public Int (t) {Dados). 0; t [i]; t [i] = null;} t = tmp; tmp = null;}/ * da esquerda para a direita é da parte superior para a parte inferior da pilha */@substituir public string tostring () {// tlo-gonerated method sTubStringBuffer buffer = newbuffer (); -1;Pilha de cadeia: implementada por meio de uma única lista vinculada.
pacote com.peter.java.dsa.common; importar com.peter.java.dsa.interfaces.stack; public class LinkedStack <t> implementa a pilha <t> {private node top; private int size; @Override BOOLEAN ISEMEMPTY () {//@@@thedo Método-gênero Substurn size Método gerado automaticamente stubtop = null; size = 0;}@substituir public t POP () {// TODO Método gerado automaticamente Stubt topValue = null; if (top! = NULL) {topValue = top.data; node Oldtop = top; top.aM »retorv; antigo; o substituto; push (t data) {// TODO Método gerado automaticamente Stubnode Oldtop = top; top; top = new Node (dados); top.prev = Oldtop; size ++; retorna true;}@substituir public int length () {// TODO Auto-Generated Método Tamanho de Return;}@Trenide public t TOP () {/ {/ ToDO-Generated Tamanho do topo de TODROT; ! = null) {topValue = top.data;} return topValue;}@substituir public int pesquisa (t dados) {// TODO Method Auto -Generated Stubint Index = -1; node tmp = top; para (int i = size -1; i> -1; i-) {if (tmp.data.equals (Data; tmp.prev;}} tmp = null; retorno índice;}@substituir public string tostring () {// TODO Method Auto -Gerated StubstringBuffer buffer = new StringBuffer (); buffer.Append ("Stack Linked Content: ["); node; {buffer.append (tmp.toString () + ","); tmp = tmp.prev;} tmp = null; buffer.append ("]"); buffer.replace (buffer.LastIndexof (","), buffer.LastIndexOf (",") + 1, "); dados; nó prev; nó public (t data) {// TODO Constructor GOERATADO AUTOMENTADO STUBTHIS.DATA = DATA;}}}O aprendizado ainda está em andamento e o código continuará sendo atualizado no futuro.
Esta é toda a explicação detalhada do código de pilha da estrutura de dados de implementação de idiomas Java, espero que seja útil para todos. Amigos interessados podem continuar se referindo a outros tópicos relacionados neste site. Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!