Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Data structures 使用循环向LinkedList添加n个元素的复杂性_Data Structures_Linked List_Big O_Time Complexity - Fatal编程技术网

Data structures 使用循环向LinkedList添加n个元素的复杂性

Data structures 使用循环向LinkedList添加n个元素的复杂性,data-structures,linked-list,big-o,time-complexity,Data Structures,Linked List,Big O,Time Complexity,假设我做了以下工作: for(int i = 0; i < n; i++) { list.add(i); } for(int i=0;i

假设我做了以下工作:

for(int i = 0; i < n; i++) {
    list.add(i);
}
for(int i=0;i

如果没有尾部指针,这个问题的复杂性应该是O(n2),对吗?(因为每次插入都是O(n),而我正在进行n次插入?)但如果有尾部指针,它将是O(n),对吗?

是的,对。使用尾部指针,您可以通过转到尾部指针指向的元素,更新“next”指针,然后更新尾部以指向新元素,在时间O(1)中将值附加到链表中。总运行时间为O(n)

另一方面,如果没有尾部指针,查找列表的最后一个元素以便更新其指针将需要时间O(n),因为必须扫描列表的所有元素。因此,总运行时间为O(n2)


希望这有帮助

。。。只要它是添加到尾部,而不是开始。好的,谢谢。如果我在做m插入,我会说O(m*n)还是说O(n^2)更好@Lucasi如果你的意思是做m个插入操作(在固定位置)而不是
列表。在循环中添加
,那么它将完成mn个操作。如果插入操作不依赖于列表的长度,或者列表的长度不随每次迭代而改变,那么它就是O(n)。