data-structures - 使用数组实现链表 - 优点和缺点

标签 data-structures linked-list

我知道如何使用数组实现链表。例如
我们定义一个结构如下:

struct Node{
    int data;
    int link;
}

“数据”存储信息,“链接”存储下一个节点数组中的索引。

谁能告诉我与“普通”链表相比,使用数组实现链表的优缺点是什么?任何建议将不胜感激。

最佳答案

如果你用一个数组来支持一个链表,你最终会遇到 的缺点。 .因此,这可能不是实现它的好方法。

一些直接的缺点:

  • 数组中的死空间(当前未用于项目的条目)将占用内存
  • 您必须跟踪免费条目 - 经过几次插入和删除后,这些免费条目可能在任何地方。
  • 使用数组将对链表的大小施加上限。

  • 我想一些优点是:
  • 如果您使用的是 64 位系统,您的“指针”将占用更少的空间(尽管免费条目所需的额外空间可能超过了这个优势)
  • 您可以将数组序列化到磁盘并使用 mmap() 读回它。轻松调用。不过,为了可移植性,您最好使用某种 Protocol Buffer 。
  • 您可以保证数组中的元素在内存中彼此接近。
  • 关于data-structures - 使用数组实现链表 - 优点和缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10477754/

    相关文章:

    c++ - 双指针问题

    c++ - 将项目插入我的排序列表时出现问题?

    c - 用函数反转链表

    java - 循环双向链表 addToHead 并打印

    c++ - c++中的循环链表问题

    data-structures - 关于负载因子的哈希表

    c++ - 我应该为 BigInt 类使用什么数据结构

    c - 打印链表当前节点的下一个元素

    algorithm - 为什么k元搜索的比较平均是k*ln(N)/ln(k)?

    c89 - 在链表中搜索节点返回 0x1 指针