【问题标题】:Time complexity to insert a node at the end of circular linked list?在循环链表末尾插入节点的时间复杂度?
【发布时间】:2017-01-13 15:23:58
【问题描述】:

在包含 N 个元素的循环单链表末尾插入节点的时间复杂度?假设我有指向第一个节点的指针。


我认为它是 O(N),因为我必须在新节点之前将 LL 解析到节点以修改其下一个字段。

我说对了吗?

【问题讨论】:

  • 列表是单链接的吗?如果是,那么你的答案是正确的。不过,对于双链表,可以在 O(1) 中解决它。
  • 另一个技巧是有一个指向最后一个节点而不是第一个节点的指针。这样,您可以在末尾和前面插入 O(1)。

标签: algorithm data-structures linked-list time-complexity


【解决方案1】:

添加到循环单链表的末尾可以在 O(1) 时间内完成。

  1. 创建一个新节点并将其插入到您的头节点之后。
  2. 将数据从 head 复制到这个新节点。
  3. 将新数据添加到旧的头节点中。
  4. 重新分配头。

由于这些都是常数时间操作,所以这个过程是 O(1)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-14
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 2020-11-15
    • 2021-05-23
    • 2015-02-08
    相关资源
    最近更新 更多