Recientemente, he revisado la estructura de datos e implementé la pila por mí mismo. Una pila es un tipo de tabla que restringe la inserción y la eliminación de una sola posición. Las operaciones más básicas están dentro y fuera de la pila, por lo que también se llama la tabla "Primera entrada y salida".
Primero, comprendamos el concepto de pila:
Una pila es una tabla lineal que limita las operaciones de inserción y eliminación solo en el encabezado de la tabla. A veces también se llama LIFO (último en la tabla First Out). Para comprender este concepto, primero debe comprender el significado original de "pila", para que pueda comprender la esencia.
"Pila" significa un lugar donde se almacenan los productos o los pasajeros pueden extenderse a un almacén o una estación de tránsito. Por lo tanto, se introduce en el campo de la computadora, que se refiere al lugar donde los datos se almacenan temporalmente, por lo que se dice que ingresa a la pila y sale de la pila.
El método de implementación es el siguiente: primero defina una interfaz e implementa una pila lineal y una pila de cadena a través de esta interfaz. El código es relativamente simple, como sigue:
paquete com.peter.java.dsa.interfaces;/*** Definición de operación de pila** @author Peter Pan*/Public Interface Stack <T> {/* Query vacía*/boolean isEmpty ();/* clare stack*/void clear ();/* bull stack ();/* enter stack*/boolean push (t data);/* longitud de stack*/tp (); Ver el elemento en la parte superior de la pila, pero no eliminarlo*/t peek ();/*Devuelve la posición del objeto en la pila*/int search (t data);}Pila lineal: implementado en una matriz.
paquete com.peter.java.dsa.common; import com.peter.java.dsa.interfaces.stack;/** * lineal stack * * @author Peter Pan */public class LineArstack <T> implementa la pila <T> {@supressresswarnings ("Unchecked") T = (T []) nuevo [16]; privado = 0; Boolean isEtimty () {// tODO Auto Generado Método stubreturn size == 0;}@anverride public void clear () {// tODO método generado automático stubfor (int i = 0; i <t.length; i ++) {t [i] = null;} size = 0;}@public top () {//////1 toDO Authenerated == 0) {return null;} t tmp = t [size-1]; t [size-1] = null; size-; return tmp;}@anular public boolean push (t data) {// toDo método generado automático stubif (size> = t.length) {RESIS TODO Método Generado automático stubreturn size;}@anular public t PEEK () {// TODO Método Generado automático stubif (size == 0) {return null;} else {return t [size -1];}}/ * return Índice de datos, return -1 si no hay datos */@public int (int i = 0; i <t.length; i ++) {if (t [i] .equals (data)) {index = i; break;}} return index;}@supressWarnings ("sin verificar") private void resize () {t [] tmp = (t []) nuevo objeto [t.length * 2]; for (int i = 0; i <t.lent; i++) {tmp [i] = t [i]; t [i] = null;} t = tmp; tmp = null;}/ * Desde la izquierda a la derecha es de la parte superior hacia la parte inferior de la pila */@anveride public string toString () {// toDo método generado por el metro de lino Contenido: ["); for (int i = t.length -1; i> -1; i--) {buffer.append (t [i] .ToString () +", ");} buffer.append ("] "); buffer.replace (buffer.lastindexof (", "), buffer.lastindexof (") + 1, ""); "); buffer.toString ();}}Pila de cadena: implementada a través de una sola lista vinculada.
paquete com.peter.java.dsa.common; import com.peter.java.dsa.interfaces.stack; public class LinkedStack <t> implementa la pila <t> {private nodo top; private int size; @Override public boolean isEtimty () {// TODO AUTO AUTO METODO GERENADO TAMAÑO == 0;} Método generado automático stubtop = null; size = 0;}@anular public t pop () {// TODO Método generado automático stubt topValue = null; if (top! = Null) {topValue = top.data; node oldtop = top = top = top = top = top. Boolean push (t data) {// TODO Método generado automático stubNode oldTop = top; top = new node (data); top.prev = oldtop; size ++; return true;}@anveride public int long () {// toDO metod de método generado por auto-topreturn stone;}@anular public t pek () {// ado ado auto-Generated methubnue stubretur null; if (top! = null) {topValue = top.data;} return topValue;}@anular public int search (t data) {// tODO auto -generado método stubint index = -1; node tmp = top; for (int i = size -1; i> -1; i--) {if (tmp.data.equals (data (data))))) {tmp = tmp.prev;}} tmp = null; return index;}@anular public string toString () {// tODO método generado automático stubStringBuffer buffer = new StringBuffer (); buffer.append ("Contenido de pila vinculado: ["); node tmp = top; para (int i = 0; i <size - 1; i+size) {buffer.append (tmp.ToString () + ","); tmp = tmp.prev;} tmp = null; buffer.append ("]"); buffer.replace (buffer.lastindexof (","), buffer.lastindexof (","); data; nodo anterior; nodo público (t data) {// constructor generado automático stubthis.data = data;}}}El aprendizaje aún está en progreso y el código continuará actualizándose en el futuro.
Esta es toda la explicación detallada del código de la estructura de datos de implementación del lenguaje Java, espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a otros temas relacionados en este sitio. Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!