【问题标题】:What are the relevant Big O notations for linked lists?链表的相关大 O 符号是什么?
【发布时间】:2014-03-02 22:31:05
【问题描述】:

单双双?

应该有一个大 O 用于在链表中插入和查找元素。

根据哥伦比亚的笔记,对于单链表,它是:

单链表 (SSL) SLL 是一系列节点。每个节点 包含数据和对下一个节点的引用。 SSL 可以增长和 根据需要缩小。向列表中添加一个元素是 O (1)。寻找一个 列表中的元素为 O (n)。

【问题讨论】:

  • 数据结构没有计算复杂度;对数据结构的操作具有计算复杂性。您要询问哪些操作?
  • 你真正想知道什么?
  • 您是否有任何理由怀疑您的发现(和引用)?或者您对所发现的内容有任何疑问?
  • 我只是觉得奇怪的是链表和双链表在插入和查找时使用相同的大 O 表示法,似乎对于额外的内存消耗,大 O 会变得更好。
  • 双链表的主要好处是链表是双链表中的一个节点有前一个和后一个操作,而链表只有一个下一个操作。

标签: computer-science


【解决方案1】:

insert() 采用O(1),因为您可以在恒定时间内向链表的head 添加一个元素

find() 需要 O(n) 时间,因为在最坏的情况下,您需要遍历列表直到到达 tail

这些适用于单链表和双链表

【讨论】:

  • single 和 double 的常量会有变化,不会影响大 O。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-11
  • 2011-03-10
相关资源
最近更新 更多