在 JavaScript 中建立棧


在本文中,我們將討論如何在 JavaScript 中建立棧資料結構。它是一種線性資料結構,其中元素的入棧和出棧遵循 LIFO(後進先出)和 FILO(先進後出)順序。

儘管 JavaScript 中的陣列提供了棧的所有功能,但讓我們實現我們自己的棧類。我們的類將具有以下函式。

  • push(element) − 用於將元素推入棧頂的函式。
  • pop() − 從棧頂移除一個元素並返回它的函式。
  • peek() − 返回棧頂的元素。
  • isFull() − 檢查是否達到了棧上的元素限制。
  • isEmpty() − 檢查棧是否為空。
  • clear() − 移除所有元素。
  • display() − 顯示陣列的所有內容

讓我們從定義一個簡單的類開始,該類帶有一個建構函式,該建構函式獲取棧的最大大小,以及一個輔助函式 display(),它將在我們為該類實現其他函式時提供幫助。我們還定義了另外兩個函式 isFull 和 isEmpty 來檢查棧是否已滿或為空。

isFull 函式只是檢查容器的長度是否等於或大於 maxSize,並相應地返回。

isEmpty 函式檢查容器的大小是否為 0。

這在定義其他操作時將很有用。從現在開始,我們定義的函式都將在 Stack 類中。

示例 1

以下示例演示瞭如何在 JavaScript 中建立棧資料結構。在此示例中,我們將討論 push() 和 pop() 方法的使用。我們建立一個棧並將元素新增到其中,並顯示棧元素。

<!DOCTYPE html>
<html lang="en">
   <head>
      <meta charset="UTF-8" />
      <meta http-equiv="X-UA-Compatible" content="IE=edge" />
      <meta name="viewport" content="width=device-width, initial-scale=1.0" />
      <title>Creating Stack Data Structure</title>
   </head>
   <body>
      <script type="text/javascript">
         class Stack {
            constructor() {
               this.stkArr = [];
            }
            // add element to the stack
            add(element) {
               return this.stkArr.push(element);
            }
            // remove element from the stack
            remove() {
               if (this.stkArr.length > 0) {
                  document.write("<br>");
                  return "The Popped element is : " + this.stkArr.pop();
               }
            }
            // view the last element
            peek() {
               document.write("<br>");
               return (
                  "The Peek element of the stack is : " +
                  this.stkArr[this.stkArr.length - 1]
               );
            }
            // check if the stack is empty
            isEmpty() {
               document.write("<br>");
               return this.stkArr.length == 0;
            }
            // the size of the stack
            size() {
               document.write("<br>");
               return "The size of the stack is : " + this.stkArr.length;
            }
            display() {
               if (this.stkArr.length !== 0) {
                  return "The stack elements are : " + this.stkArr + "<br>";
               } else {
                  document.write("The Stack is Empty..! <br>");
               }
            }
            // empty the stack
            clear() {
               document.write("
The stack is cleared..!" + "<br>"); this.stkArr = []; } } let stack = new Stack(); stack.add(1); stack.add(2); stack.add(3); stack.add(4); stack.add(5); document.write(stack.display()); document.write(stack.size()); </script> </body> </html>

示例 2

另一個在 JavaScript 中執行棧操作的示例如下所示:

class Stack {
   constructor(maxSize) {
      if (isNaN(maxSize)) {
         maxSize = 10;
      }
      this.maxSize = maxSize;  
      this.container = [];
   }
   display() {
      console.log(this.container);
   }
   push(element) {
      this.container.push(element);
   }
}
const obj = new Stack(10);
obj.push(10);
obj.push(44);
obj.push(55);
obj.display();

更新於: 2022-12-08

2K+ 次檢視

啟動你的 職業生涯

透過完成課程獲得認證

開始學習
廣告