」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > JS 堆疊 DS&A 介紹

JS 堆疊 DS&A 介紹

發佈於2024-08-26
瀏覽:160

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

什麼是堆疊?

堆疊是一種線性資料結構,遵循以 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 



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

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

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

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

版本聲明 本文轉載於:https://dev.to/cedsengine/js-stacks-dsa-intro-bl3?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 為什麼我會收到MySQL錯誤#1089:錯誤的前綴密鑰?
    為什麼我會收到MySQL錯誤#1089:錯誤的前綴密鑰?
    mySQL錯誤#1089:錯誤的前綴鍵錯誤descript [#1089-不正確的前綴鍵在嘗試在表中創建一個prefix鍵時會出現。前綴鍵旨在索引字符串列的特定前綴長度長度,可以更快地搜索這些前綴。 了解prefix keys `這將在整個Movie_ID列上創建標準主鍵。主密鑰對於唯一識...
    程式設計 發佈於2025-07-08
  • 如何使用不同數量列的聯合數據庫表?
    如何使用不同數量列的聯合數據庫表?
    合併列數不同的表 當嘗試合併列數不同的數據庫表時,可能會遇到挑戰。一種直接的方法是在列數較少的表中,為缺失的列追加空值。 例如,考慮兩個表,表 A 和表 B,其中表 A 的列數多於表 B。為了合併這些表,同時處理表 B 中缺失的列,請按照以下步驟操作: 確定表 B 中缺失的列,並將它們添加到表的...
    程式設計 發佈於2025-07-08
  • Python中嵌套函數與閉包的區別是什麼
    Python中嵌套函數與閉包的區別是什麼
    嵌套函數與python 在python中的嵌套函數不被考慮閉合,因為它們不符合以下要求:不訪問局部範圍scliables to incling scliables在封裝範圍外執行範圍的局部範圍。 make_printer(msg): DEF打印機(): 打印(味精) ...
    程式設計 發佈於2025-07-08
  • 如何從Google API中檢索最新的jQuery庫?
    如何從Google API中檢索最新的jQuery庫?
    從Google APIS 問題中提供的jQuery URL是版本1.2.6。對於檢索最新版本,以前有一種使用特定版本編號的替代方法,它是使用以下語法:獲取最新版本:未壓縮)While these legacy URLs still remain in use, it is recommended ...
    程式設計 發佈於2025-07-08
  • 如何使用Python理解有效地創建字典?
    如何使用Python理解有效地創建字典?
    在python中,詞典綜合提供了一種生成新詞典的簡潔方法。儘管它們與列表綜合相似,但存在一些顯著差異。 與問題所暗示的不同,您無法為鑰匙創建字典理解。您必須明確指定鍵和值。 For example:d = {n: n**2 for n in range(5)}This creates a dict...
    程式設計 發佈於2025-07-08
  • 如何避免Go語言切片時的內存洩漏?
    如何避免Go語言切片時的內存洩漏?
    ,a [j:] ...雖然通常有效,但如果使用指針,可能會導致內存洩漏。這是因為原始的備份陣列保持完整,這意味著新切片外部指針引用的任何對象仍然可能佔據內存。 copy(a [i:] 對於k,n:= len(a)-j i,len(a); k
    程式設計 發佈於2025-07-08
  • 在Ubuntu/linux上安裝mysql-python時,如何修復\“ mysql_config \”錯誤?
    在Ubuntu/linux上安裝mysql-python時,如何修復\“ mysql_config \”錯誤?
    mysql-python安裝錯誤:“ mysql_config找不到”“ 由於缺少MySQL開發庫而出現此錯誤。解決此問題,建議在Ubuntu上使用該分發的存儲庫。使用以下命令安裝Python-MysqldB: sudo apt-get安裝python-mysqldb sudo pip in...
    程式設計 發佈於2025-07-08
  • 人臉檢測失敗原因及解決方案:Error -215
    人臉檢測失敗原因及解決方案:Error -215
    錯誤處理:解決“ error:((-215)!empty()in Function Multultiscale中的“ openCV 要解決此問題,必須確保提供給HAAR CASCADE XML文件的路徑有效。在提供的代碼片段中,級聯分類器裝有硬編碼路徑,這可能對您的系統不准確。相反,OPENCV提...
    程式設計 發佈於2025-07-08
  • FastAPI自定義404頁面創建指南
    FastAPI自定義404頁面創建指南
    response = await call_next(request) if response.status_code == 404: return RedirectResponse("https://fastapi.tiangolo.com") else: ...
    程式設計 發佈於2025-07-08
  • 為什麼我的CSS背景圖像出現?
    為什麼我的CSS背景圖像出現?
    故障排除:CSS背景圖像未出現 ,您的背景圖像儘管遵循教程說明,但您的背景圖像仍未加載。圖像和样式表位於相同的目錄中,但背景仍然是空白的白色帆布。 而不是不棄用的,您已經使用了CSS樣式: bockent {背景:封閉圖像文件名:背景圖:url(nickcage.jpg); 如果您的html,cs...
    程式設計 發佈於2025-07-08
  • \“(1)vs.(;;):編譯器優化是否消除了性能差異?\”
    \“(1)vs.(;;):編譯器優化是否消除了性能差異?\”
    答案: 在大多數現代編譯器中,while(1)和(1)和(;;)之間沒有性能差異。編譯器: perl: 1 輸入 - > 2 2 NextState(Main 2 -E:1)V-> 3 9 Leaveloop VK/2-> A 3 toterloop(next-> 8 last-> 9 ...
    程式設計 發佈於2025-07-08
  • 如何有效地轉換PHP中的時區?
    如何有效地轉換PHP中的時區?
    在PHP 利用dateTime對象和functions DateTime對象及其相應的功能別名為時區轉換提供方便的方法。例如: //定義用戶的時區 date_default_timezone_set('歐洲/倫敦'); //創建DateTime對象 $ dateTime = ne...
    程式設計 發佈於2025-07-08
  • Go web應用何時關閉數據庫連接?
    Go web應用何時關閉數據庫連接?
    在GO Web Applications中管理數據庫連接很少,考慮以下簡化的web應用程序代碼:出現的問題:何時應在DB連接上調用Close()方法? ,該特定方案將自動關閉程序時,該程序將在EXITS EXITS EXITS出現時自動關閉。但是,其他考慮因素可能保證手動處理。 選項1:隱式關閉終...
    程式設計 發佈於2025-07-08
  • `console.log`顯示修改後對象值異常的原因
    `console.log`顯示修改後對象值異常的原因
    foo = [{id:1},{id:2},{id:3},{id:4},{id:id:5},],]; console.log('foo1',foo,foo.length); foo.splice(2,1); console.log('foo2', foo, foo....
    程式設計 發佈於2025-07-08
  • 用戶本地時間格式及時區偏移顯示指南
    用戶本地時間格式及時區偏移顯示指南
    在用戶的語言環境格式中顯示日期/時間,並使用時間偏移在向最終用戶展示日期和時間時,以其localzone and格式顯示它們至關重要。這確保了不同地理位置的清晰度和無縫用戶體驗。以下是使用JavaScript實現此目的的方法。 方法:推薦方法是處理客戶端的Javascript中的日期/時間格式化和...
    程式設計 發佈於2025-07-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3