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;
}

参考#

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。