Linked List 链结串列

Linked List 链结串列

Singly Linked List 定义

  • 每个 Node 会包含 value 和 next 的资讯
  • Linked List 会包含 head, tail 的资讯
  • Linked List 包含 append, prepend, insert, remove, printList 的方法

Doubly Linked List 定义

  • 每个节点(Node)包含了 next, prev 和 value
  • Linked List 会纪录 head, tail 的资讯
  • Linked List 实作了 append, prepend, insert, remove printList 的方法

Linked List 链结串列

Linked List 优点

使用 Linked List 的资料结构可以更有效率的使用记忆体,因为每一个元素都是独立,彼此之间是透过 next 和 prev 来关联在一起

Array 和 Linked List 的差别

Linked List Array
说明 类似把很多个物件关联起来,并有顺序性 同一记忆体空间的一个区间
记忆体 不需要连续的记忆体空间,因此不需要预留空间 需要连续的记忆体空间,宣告时就需要决定空间大小
资料插入/删除 相对快,插入和删除本身是 O(1),但有时需要先搭配搜寻 O(n) 来找到节点位置 相对慢,插入与删除均为 O(n)
资料取出 相对慢,要从头开始找 O(n) 到后取出 相对快,可以直接使用索引(index)取出
适用时机 1. 无法预期资料数量时 2. 需要频繁增删资料时 3. 不需要频繁查询并取出资料时 1. 需要快速取出资料时 2. 不需要频繁增删资料时 3. 资料的数量不会有太大变更时

参考资料