如果您使用任何現代設備,您可能會遇到堆疊操作,即使您沒有意識到。堆疊是許多程式設計任務的基礎,從管理函數呼叫到啟用撤銷操作。
堆疊是一種線性資料結構,遵循以 LIFO 或 FILO 結構組織資料的操作順序。
LIFO:後進先出。
FILO:先進後出。
堆疊用於對元素集合執行操作,例如新增和刪除元素、顯示頂部元素以及顯示集合是否為空或已滿。
例如:
當您正在使用網路瀏覽器造訪 www.ESPN.com 時,您不小心點擊了芝加哥白襪隊棒球門票的廣告。我們添加到我們的堆疊中,也許不是故意的,但現在它位於我們堆疊的頂部。然後我們意識到芝加哥白襪隊已經連續輸了 15 場比賽。好吧...讓我們點擊後退按鈕(從堆疊頂部刪除該元素)。
是的,就在那裡。這演示了堆疊操作中的後進先出原則,我們將從歷史記錄(或堆疊)中刪除(刪除)最後訪問的頁面以返回 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我想強調最後的 if-else 語句。我使用 JSON.stringify 方法來比較兩個數組,因為如果沒有它,比較將返回 false,從而觸發 else 條件,即使數組具有相同的內容。發生這種情況是因為,在 JavaScript 中比較數組時,比較檢查的是它們的引用(即它們的記憶體位置),而不是數組內的實際內容。
正如我們在整個 for 循環中看到的,我們的方法 .pop(刪除)首先(LIFO)numberList 數組中的最後一個索引。然後使用 .push 方法將其新增至新陣列 ordernumberList 中,將原始陣列反轉。
FILO 出現在新數組中,如果使用堆疊操作進行修改,則推入 ordernumberList 數組的第一個索引將是最後一個索引 (FILO)。
在本文中,我們探討了堆疊如何使用 LIFO 和 FILO 原理進行操作,並在 JavaScript 中實作了堆疊操作。理解堆疊對於許多程式設計任務至關重要,正如在網頁瀏覽等現實場景中所看到的那樣。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3