JavaScript 中的 資料結構

XiSoil發表於2024-09-05

資料結構

資料結構是計算機儲存、組織資料的方式。

1.陣列

陣列是最最基本的資料結構,很多語言都內建支援陣列。
陣列是使用一塊連續的記憶體空間儲存資料,儲存的資料的個數在分配記憶體的時候就是確定的。

2.棧

棧是一種遵循後進先出(LIFO)原則的有序集合在棧裡,新元素都接近棧頂,舊元素都接近棧底。
每次加入新的元素和拿走元素都在頂部操作

3.佇列

佇列是遵循先進先出(FIFO,也稱為先來先服務)原則的一組有序的項佇列在尾部新增新元素
並從頂部移除元素
最新新增的元素必須排在佇列的未尾

4.連結串列

連結串列也是一種列表,已經設計了陣列,為什麼還需要連結串列呢?
JavaScript中陣列的主要問題時,它們被實現成了物件,與其他語言(比如C++Java)的陣列相對,效率很低。
如果你發現陣列在實際使用時很慢,就可以考慮使用連結串列來代替。
使用條件:

  • 連結串列幾乎可以用在任何可以使用一維陣列的情況中。
  • 如果需要隨機訪問,陣列仍然是更好的選擇。

5.字典

字典是一種以鍵-值對儲存資料的資料結構,js中的Object類就是以字典的形式設計的。
JavaScript可以透過實現字典類,讓這種字典型別的物件使用起來更加簡單,字典可以實現物件擁有的常見功能,並相應擴充自己想要的功能,而物件在JavaScript編寫中隨處可見,所以字典的作用也異常明顯了。

6.雜湊表

也稱為雜湊表,特點是在雜湊表上插入、刪除和取用資料都非常快。
為什麼要設計這種資料結構呢?
用陣列或連結串列儲存資料,如果想要找到其中一個資料,需要從頭進行遍歷,因為不知道這個資料儲存到了陣列的哪個位置。
雜湊表在JavaScript中可以基礎陣列去進行設計,陣列的長度是預先設定的,所有元素根據和該元素對應的鍵,儲存在陣列的特定位置,這裡的鍵和物件的鍵是型別的概念。
使用雜湊表儲存陣列時,透過一個雜湊函式將鍵對映為一個數字,這個數字的範圍是0到雜湊表的長度即使使用一個高效的雜湊函式,依然存在將兩個鍵對映為同一個值得可能,這種現象叫做碰撞。
常見碰撞的處理方法有:開鏈法線性探測法
使用條件:可以用於資料的插入、刪除和取用,不適用於查詢資料

相關文章