myesn

myEsn2E9

hi
github

[數組 array] 和 [鏈表 linked list]

[數組 array] 連續空間存儲[鏈表 linked list] 離散空間存儲 是兩種基本的數據結構,分別代表數據在計算機內存中的兩種存儲方式,兩者的特點呈現出互補的特性。

數組 array#

[數組 array] 是一種線性數據結構,其將相同類型元素存儲在連續的內存空間中。數組的長度是不可變的
image

插入和刪除缺點:時間複雜度高 O (n),丟失元素、內存浪費。

典型應用:隨機訪問、排序和搜索、查找表、機器學習、數據結構實現。

鏈表 linked list#

[鏈表 linked list] 是一種線性數據結構,其中的每個元素都是一個節點對象,各個節點通過 “引用” 相連接
image

引用記錄了下一個節點的內存地址。鏈表的設計使得各個節點可以被分散存儲在內存各處

頭節點,尾節點,尾節點指向的是” 空 “。

鏈表因為保存引用,所以比數組佔用更多的內存空間

// **單向**鏈表(singly linked list)
// **典型應用:棧與隊列、哈希表、圖**
class ListNode {
  int val;
  ListNode? next;
  ListNode(int x) => val = x;
}

// **雙向**鏈表(doubly linked list)
// **典型應用(快速查找前/後元素):高級數據結構、瀏覽器歷史、LRU 算法。**
class ListNode {
  int val;
  ListNode? next;
  ListNode? prev;
  ListNode(int x) => val = x;
}

// **環形**鏈表(circular linked list)
// 和雙向鏈表一樣,區別是首尾相接
// **典型應用(周期性操作):時間片輪轉調度算法、數據緩衝區。**
class ListNode {
  int val;
  ListNode next;
  ListNode prev;
  ListNode(int x) => val = x;
}

參考#

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。