В настоящее время у меня есть метод, который добавляет один связанный список (list2) в конец другого (list1). Это происходит через некоторое время l oop, при этом каждая итерация добавляет следующий узел от конца list1 к концу list2 и т. Д.
Насколько я понимаю, это будет O (n) сложность времени, так как количество итераций в то время как l oop напрямую определяется размером list2. Если list2 имеет 15 узлов, функция выполняет 15 добавлений, если list2 имеет 1000 узлов, она выполняет 1000 добавлений.
Часто, однако, я продолжаю видеть, что люди отмечают, что это объединение может быть выполнено за O (1) времени сложность, если вы держите указатель на хвост list1. Как это возможно? Из моего (по общему признанию ограниченного) понимания я могу в некоторой степени понять, что отдельные добавления - это O (1), но если вы добавляете целый список, это не обязательно должно быть в то время как l oop и сканирование всего списка2 независимо, следовательно, O (n)?