不同情况下单链表的时间复杂度

问题描述 投票:0回答:1

单链表有n个节点,给出第i个节点的地址,分析以下情况。

1.在第(i-1)个节点和第i个节点之间添加一个新节点,假设第i个节点的地址不能改变。

  1. 重复1,但允许第i个节点的地址改变。

我认为无论是否允许第i个节点的地址改变,时间复杂度都是O(n),n取决于链表的数量。

不知道第i个节点的地址是否变化有什么影响

algorithm data-structures linked-list time-complexity big-o
1个回答
0
投票

你有一个对第i个节点的引用,你可以“更改地址”,然后你可以在第i个节点之后插入一个新节点,并将第i个节点的内容复制到新节点:

// `node` is a reference to the i-th node
// `value` is a value for a new inserted node
struct node *new_node = malloc(sizeof(struct node));
new_node->next = node->next;
new_node->value = node->value; // copy the content
node->next = new_node;
node->value = value;

这是一个 O(1) 操作。

© www.soinside.com 2019 - 2024. All rights reserved.