Heim  >  Artikel  >  Web-Frontend  >  Implementierungsmethode des Stapels in JavaScipt_Javascript-Kenntnissen

Implementierungsmethode des Stapels in JavaScipt_Javascript-Kenntnissen

WBOY
WBOYOriginal
2016-05-16 15:15:09903Durchsuche

Der nächste Schritt ist der erste Teil der Datenstruktur, Stapel.
Stack ist eine geordnete Sammlung, die dem Last-In-First-Out-Prinzip (LIFO, vollständiger Name: Last In First Out) folgt. Das oberste Element im Stapel ist immer das neueste Element.
Beispiel: Ein Stapel ist wie ein Stapel Bücher in einer Kiste. Wenn Sie das unterste Buch nehmen möchten, müssen Sie zuerst das oberste Buch entfernen. (Natürlich können Sie nicht zuerst das Buch unten nehmen)
Sie können es auch verstehen, indem Sie sich das Diagramm ansehen.

Implementierung des Stacks in JavaScipt
Erstellen Sie zunächst einen Konstruktor.

/**
 * 栈的构造函数
 */
function Stack() {

 // 用数组来模拟栈
 var item = [];
}

Der Stapel muss über die folgenden Methoden verfügen:

  • push(element(s)): Füge mehrere Elemente oben im Stapel hinzu
  • pop(): Das oberste Element des Stapels entfernen und zurückgeben
  • peek(): Gibt das oberste Element des Stapels zurück
  • isAmpty: Überprüfen Sie, ob der Stapel leer ist. Wenn er leer ist, geben Sie true zurück
  • clear: Alle Elemente vom Stapel entfernen
  • Größe: Gibt die Anzahl der Elemente im Stapel zurück.
  • Drucken: Alle Inhalte im Stapel als Zeichenfolge anzeigen

Implementierung der Push-Methode
Erklärung: Neue Elemente müssen zum Stapel hinzugefügt werden und die Elementposition befindet sich am Ende der Warteschlange. Mit anderen Worten: Wir können die Push-Methode des Arrays verwenden, um die Implementierung zu simulieren.
Umsetzung:

/**
 * 将元素送入栈,放置于数组的最后一位
 * @param {Any} element 接受的元素,不限制类型
 */
this.push = function(element) {
 items.push(element);
};

Implementierung der Pop-Methode
Erklärung: Es ist notwendig, das oberste Element des Stapels zu entfernen und gleichzeitig den entnommenen Wert zurückzugeben. Sie können die Pop-Methode des Arrays verwenden, um die Implementierung zu simulieren.
Umsetzung:

/**
 * 弹出栈顶元素
 * @return {Any} 返回被弹出的值
 */
this.pop = function() {
 return items.pop();
};

Implementierung der Peek-Methode
Hinweis: Die Anzeige des obersten Elements des Stapels kann mithilfe der Array-Länge erfolgen.
Umsetzung:

/**
 * 查看栈顶元素
 * @return {Any} 返回栈顶元素
 */
this.peek = function() {
 return items[items.length - 1];
}

Implementierung anderer Methoden
Hinweis: Die ersten drei sind der Kern der Stack-Methode, die übrigen Methoden werden hier gleichzeitig aufgelistet. Denn die unten besprochene Warteschlange wird sich stark mit diesem Teil überschneiden.
Umsetzung:

/**
 * 确定栈是否为空
 * @return {Boolean} 若栈为空则返回true,不为空则返回false
 */
this.isAmpty = function() {
 return items.length === 0
};

/**
 * 清空栈中所有内容
 */
this.clear = function() {
 items = [];
};

/**
 * 返回栈的长度
 * @return {Number} 栈的长度
 */
this.size = function() {
 return items.length;
};

/**
 * 以字符串显示栈中所有内容
 */
this.print = function() {
 console.log(items.toString());
};

Praktische Anwendung
Es gibt viele praktische Anwendungen des Stapels. Es gibt eine Funktion im Buch, die Dezimalzahlen in Binärzahlen umwandelt. (Wenn Sie nicht wissen, wie man binär rechnet, können Sie Baidu verwenden.) Im Folgenden finden Sie den Quellcode der Funktion.
Das Prinzip besteht darin, die umzurechnende Zahl einzugeben, fortlaufend durch zwei zu dividieren und zu runden. Und schließlich verwenden Sie eine While-Schleife, um alle Zahlen im Stapel für die Ausgabe zu einer Zeichenfolge zu verketten.

/**
 * 将10进制数字转为2进制数字
 * @param {Number} decNumber 要转换的10进制数字
 * @return {Number}      转换后的2进制数字
 */
function divideBy2(decNumber) {

 var remStack = new Stack(),
  rem,
  binaryString = '';

 while (decNumber > 0) {
  rem = Math.floor(decNumber % 2);
  remStack.push(rem);
  decNumber = Math.floor(decNumber / 2);
 }

 while (!remStack.isAmpty()) {
  binaryString += remStack.pop().toString();
 }

 return binaryString;
};

An diesem Punkt ist das Studium des Stapels abgeschlossen. Ich hoffe, dass es für alle hilfreich sein wird, zu lernen, wie man den Stapel in JavaScript implementiert.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn