首頁 >web前端 >js教程 >JS 堆疊 DS&A 介紹

JS 堆疊 DS&A 介紹

WBOY
WBOY原創
2024-08-16 06:03:071011瀏覽

如果您使用任何現代設備,您可能會遇到堆疊操作,即使您沒有意識到。堆疊是許多程式設計任務的基礎,從管理函數呼叫到啟用撤銷操作。

什麼是堆疊?

堆疊是一種線性資料結構,遵循以 LIFO 或 FILO 結構組織資料的操作順序。

LIFO:後進先出。

FILO:先進後出。

堆疊用於對元素集合執行操作,例如新增和刪除元素、顯示頂部元素以及顯示集合是否為空或已滿。

例如:

當您正在使用網路瀏覽器造訪 www.ESPN.com 時,您不小心點擊了芝加哥白襪隊棒球門票的廣告。我們添加到我們的堆疊中,也許不是故意的,但現在它位於我們堆疊的頂部。然後我們意識到芝加哥白襪隊已經連續輸了 15 場比賽。好吧...讓我們點擊後退按鈕(從堆疊頂部刪除該元素)。

JS stacks DS&A intro

是的,就是上面那個。這演示了堆疊操作中的後進先出原則,我們將從歷史記錄(或堆疊)中刪除(刪除)最後訪問的頁面以返回 www.ESPN.com ...也許明年是白襪隊的。

堆疊操作經常用於需要維護順序 Web 瀏覽器歷史記錄、文字編輯器上的撤消和重做以及函數呼叫堆疊等的應用程式。

更改堆疊時常用的函數如下:

.Push = 將元素加入堆疊中。

.pop = 從堆疊中刪除頂部元素。

.peek = 顯示堆疊頂部元素。

.length/.size = 決定堆疊中索引的總數。 JavaScript 使用 (.length)

.isEmpty = 檢查堆疊是否為空。

.isFull = 檢查堆疊是否已滿;如果陣列有固定大小。

Stacks 資料結構可以使用 stacks 類別或常規陣列建立。

無需類別即可實現堆疊:

在沒有 stacks 類別的情況下執行堆疊操作時,我們用陣列模擬堆疊操作。

下面將是一個使用堆疊操作來反轉數字數組的範例。我將使用 JSON.stringify 將陣列結果的值與所需的陣列結果進行比較。

例如:

// Reverse an array using stack operations

let number = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; // original array
let numberList = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]; // reversed array
let ordernumberList = []; // array to store the reversed order

// Loop through the numberList array to reverse its order
for (var i = 0; i < number.length; i++) {
  let currentValue = numberList.pop(); // using the key .pop method to remove the last element from numberList
  ordernumberList.push(currentValue); // using the key .push method to push the popped element into ordernumberList
}

console.log(ordernumberList + " vs " + number); // compare the arrays

// Convert both arrays into JSON strings for comparison
if (JSON.stringify(ordernumberList) === JSON.stringify(number)) {
  console.log("The number list is reversed: " + ordernumberList);
  return ordernumberList;
} else {
  console.log("The number list is not reversed: " + ordernumberList);
}

我想強調最後的 if-else 語句。我使用 JSON.stringify 方法來比較兩個數組,因為如果沒有它,比較將返回 false,從而觸發 else 條件,即使數組具有相同的內容。發生這種情況是因為,在 JavaScript 中比較數組時,比較檢查的是它們的引用(即它們的記憶體位置),而不是數組內的實際內容。

正如我們在整個 for 迴圈中所看到的,我們的方法 .pop (刪除)首先(LIFO)numberList 陣列中的最後一個索引。然後使用 .push 方法將其新增至新陣列 ordernumberList 中,將原始陣列反轉。

FILO 出現在新陣列中,如果透過堆疊操作進行修改,則推入 ordernumberList 陣列的第一個索引將是最後一個索引 (FILO)。

在本文中,我們探討了堆疊如何使用 LIFO 和 FILO 原理進行操作,並在 JavaScript 中實作了堆疊操作。了解堆疊對於許多程式設計任務至關重要,如在網頁瀏覽等現實場景中所見。

以上是JS 堆疊 DS&A 介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn