Vor kurzem habe ich die Datenstruktur überprüft und den Stapel selbst implementiert. Ein Stapel ist eine Art von Tabelle, die das Einfügen und die Löschung von nur einer Position einschränkt. Die grundlegendsten Operationen sind im Stapel und aus dem Stapel und werden auch als "First -In -and Out" -Tisch bezeichnet.
Lassen Sie uns zunächst das Konzept des Stacks verstehen:
Ein Stapel ist eine lineare Tabelle, die die Einfügungs- und Löschvorgänge nur im Tischkopf begrenzt. Manchmal wird es auch als LIFO bezeichnet (neuestes in der ersten Out -Tabelle). Um dieses Konzept zu verstehen, müssen Sie zunächst die ursprüngliche Bedeutung von "Stack" verstehen, damit Sie die Essenz erfassen können.
"Stack" bezeichnet einen Ort, an dem Waren gelagert werden oder Passagiere auf ein Lagerhaus oder eine Transitstation ausgedehnt werden können. Daher wird es in das Computerfeld eingeführt, das sich auf den Ort bezieht, an dem Daten vorübergehend gespeichert werden, sodass es ein Sprichwort gibt, dass es in den Stapel eintritt und den Stapel verlässt.
Die Implementierungsmethode lautet wie folgt: Definieren Sie zuerst eine Schnittstelle und implementieren Sie dann einen linearen Stapel und einen Kettenstapel über diese Schnittstelle. Der Code ist relativ einfach wie folgt:
Paket com.peter.java.dsa.Interfaces;/*** Stack Operation Definition** @Author Peter Pan*/public Interface Stack <T> {/* Abfrage leer*/boolean isEmpty ();/* Clear Stack*/void Clear ();/* Bullenstack*/t Pop (). Zeigen Sie das Element oben im Stapel an, entfernen Sie es jedoch nicht*/t peek ();/*Geben Sie die Position des Objekts in der Stapel*/int -Suche (t data) zurück;};}Linearer Stack: In einem Array implementiert.
package com.peter.java.dsa.common;import com.peter.java.dsa.interfaces.Stack;/** * Linear stack* * @author Peter Pan */public class LinearStack<T> implements Stack<T> {@SuppressWarnings("unchecked") private T[] t = (T[]) new Object[16];private int size = 0;@Override public Boolean isEmpty () {// Todo automatisch generierte Methode StubReturn size == 0;}@override public void clear () {// Todo automatisch generierte Methode Stubfor (int i = 0; i <t.Length; i ++) {t [i] = null;} allogröße = 0;}@@@@@@@Overside public t.pop () {// // todo allodo-grise = 0; 0) {return null;} t tmp = t [Größe-1]; t [Größe-1] = null; Größe-; Automatische generierte Methode StubReturn -Größe;}@override public t peek () {// Todo automatisch generierte Methode stubif (size == 0) {return null;} else {return t [Größe -1];}}/ * Rückgabeindex von Daten, 1 if no data */@overside öffentlich int -search (taten) {/ //. = 0; t [i]; t [i] = null;} t = tmp; tmp = null;}/ * von links nach rechts ist von oben nach unten im Stapel */@overside public String toString () {// Todo Auto-generierte Methode Stubstringbuffer = New StringBuffer (); T.Length -1; i> -1;Kettenstack: Implementiert über eine einzige verknüpfte Liste.
Paket com.peter.java.dsa.common; import com.peter.java.dsa.interfaces.stack; öffentliche Klasse LinkedStack <T> Implementiert Stack <t> {private node top; Automatisch generierte Methode stubtop = null; size = 0;}@override public t pop () {// Todo automatisch generierte Methode stubt topvalue = null; if (top! Boolean push(T data) {// TODO Auto-generated method stubNode oldTop = top;top = new Node(data);top.prev = oldTop;size++;return true;}@Override public int length() {// TODO Auto-generated method stubreturn size;}@Override public T peek() {// TODO Auto-generated method stubT topValue = null; if (top! sonst {tmp = tmp.prev;}} tmp = null; return index;}@override public String toString () {// todo automatisch generierte Methode StubstringBuffer Buffer = new StringBuffer (); Buffer.Append ("Verknüpfte Stack -Inhalt: ["); {buffer.append (tmp.toString () + ","); tmp = tmp.prev;} tmp = null; buffer.append ("]); buffer.replace (buffer.lastindexof (", "), buffer.lastIndexof (", ") + 1,"; Daten; Knoten prev; public node (t data) {// Todo automatisch generierter Konstruktor stubthis.data = data;}}}Lernen ist noch im Gange und der Code wird in Zukunft weiterhin aktualisiert.
Dies ist alles die detaillierte Erklärung des Stapelcode für die Datenstruktur von Java Language -Implementierungsdatenstruktur. Ich hoffe, er wird für alle hilfreich sein. Interessierte Freunde können weiterhin auf andere verwandte Themen auf dieser Website verweisen. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!