Récemment, j'ai examiné la structure des données et mis en œuvre la pile par moi-même. Une pile est un type de table qui restreint l'insertion et la suppression d'une seule position. Les opérations les plus élémentaires sont dans et hors de la pile, il est donc également appelé le tableau "First In and Out".
Tout d'abord, comprenons le concept de pile:
Une pile est une table linéaire qui limite les opérations d'insertion et de suppression uniquement dans l'en-tête de la table. Parfois, il est également appelé LIFO (dernier dans la première table). Pour comprendre ce concept, vous devez d'abord comprendre la signification originale de "Stack", afin que vous puissiez saisir l'essence.
"Stack" signifie un endroit où les marchandises sont stockées ou des passagers peuvent être étendus à un entrepôt ou à une station de transport en commun. Par conséquent, il est introduit dans le champ informatique, qui fait référence à l'endroit où les données sont temporairement stockées, il y a donc un dicton qu'il entre dans la pile et quitte la pile.
La méthode d'implémentation est la suivante: Définissez d'abord une interface, puis implémentez une pile linéaire et une pile de chaîne via cette interface. Le code est relativement simple, comme suit:
Package com.peter.java.dsa.interfaces; / ** * Définition de l'opération de pile * * @Author Peter Pan * / Interface publique Stack <T> {/ * Query Vide * / Boolean iSempty (); / * Effective Stack * / Void Clear (); / * Bull Stack * / T Pop (); / * Entre Stack * / Boolean Push (t Data); / * longueur de la pile * / intring (); de la pile, mais ne le supprimez pas * / t peek (); / * renvoie la position de l'objet dans la pile * / int search (t data);}Stack linéaire: implémenté dans un tableau.
package com.peter.java.dsa.common; import com.peter.java.dsa.interfaces.stack; / ** * Linear Stack * * @Author Peter Pan * / public class linsearstack <T> implémente la pile <T> {@SuppressWarnings ("Unchecked") Private T [] t = (t []) New Object [16]; Private Taille = 0; @Over. iSempty () {// TODO Méthode générée automatique Stubreturn SIZE == 0;} @ Override public void clear () {// TODO Méthode générée automatique null;} t tmp = t [size - 1]; t [size - 1] = null; size -; return tmp;} @ override public boolean push (t data) {// too method-généré automatique Stubif (size> = t.length) {res size ();} t [size ++] = data; return true; @ overnide public intylong () {/ tobo atebo-gener-gener;} @ overnide public in intlenth () {/ tobo Taille;} @ Override public t peek () {// TODO Méthode générée automatiquement Stubif (size == 0) {return null;} else {return t [size - 1];}} / * return index of data, return -1 if pas de données * / @ override public int search (t data) {// {if (t [i] .equals (data)) {index = i; break;}} return index;} @ suppresswarnings ("Unchecked") private void redimensit () {t [] tmp = (t []) nouvel objet [t.length * 2]; pour (int i = 0; i <t.Length; i ++) {tmp [i] = t [i]) null;} t = tmp; tmp = null;} / * de la gauche à droite se trouve du haut en bas de la pile * / @ Override public String toString () {// TODO TODO GÉNÉRÉE MÉTHODE StubstringBuffer Buffer = New StringBuffer (); tampon.APPEND ("Contenu de la pile linéaire: [") pour (pour I = IN = T.Length {buffer.append (t [i] .toString () + ",");} buffer.append ("]"); buffer.replace (buffer.lastIndexof (","), tamper.lastIndexof (",") + 1, "");Pile de chaîne: implémentée via une seule liste liée.
Package com.peter.java.dsa.common; import com.peter.java.dsa.interfaces.stack; classe publique LinkedStack <T> implémente Stack <T> {private nœud top; private int size; @Override public boolean isEempty () {// todo-généré par la méthode générée par StudenTr size == 0; Méthode générée automatiquement StubTop = null; size = 0;} @ Override public t Pop () {// TODO Méthode générée automatique Stubt topValue = null; if (top! = Null) {topvalue = top.data; node oldtop = push (t data) {// TODO Méthode générée automatiquement StubNode oldtop = top; top = new nœud (data); top.prev = oldtop; size ++; return true;} @ override public int longueur () {// todo a auto-généré la méthode Stumint size;} @ overderide public t peek () {ifo-todo-généré par le topvalue auto-généré par Auto-généré null) {topvalue = top.data;} return topValue;} @ override public int search (t data) {// TODO Méthode générée automatiquement index = -1; node tmp = top; for (int i = size - 1; i> -1; i--) {if (tmp.data.equals (data)) {index = i; break;} tmp.prev;}} tmp = null; return index;} @ override public String toString () {// todo ate géré la méthode StubstringBuffer buffer = new StringBuffer (); buffer.append ("contenu lié: ["); node tmp = top; pour (int i = 0; i <size - 1; i ++) {buffer.append (tmp.toString () + ","); tmp = tmp.prev;} tmp = null; tamper.append ("]"); tamper.replace (buffer.lastidexof (","), tamper.lastindexof (") + 1," "); return super.tostring ();} casse node. Données; Node Précédent; Node public (T Data) {// TODO Auto-généré du constructeur Stubthis.Data = Data;}}}L'apprentissage est toujours en cours et le code continuera d'être mis à jour à l'avenir.
Ceci est toute l'explication détaillée du code de pile de la structure des données d'implémentation de la langue Java, j'espère que ce sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets connexes sur ce site. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!