Sobes.tech
Junior — Middle
93

Comment déterminer la complexité temporelle de l'opération d'ajout d'un élément à la fin d'une liste chaînée?

Réponse de l'IA

sobes.tech IA

Временная сложность добавления элемента в конец связанного списка зависит от того, есть ли у списка указатель на последний элемент (хвост).

  • Если есть указатель на хвост, добавление происходит за O(1), так как можно сразу добавить новый элемент после хвоста.
  • Если указателя на хвост нет, нужно пройти по всему списку, чтобы найти последний элемент, и тогда сложность будет O(n), где n — количество элементов в списке.

Пример на Python с указателем на хвост:

class Node:
    def __init__(self, value):
        self.value = value
        self.next = None

class LinkedList:
    def __init__(self):
        self.head = None
        self.tail = None

    def append(self, value):
        new_node = Node(value)
        if not self.head:
            self.head = new_node
            self.tail = new_node
        else:
            self.tail.next = new_node
            self.tail = new_node

Здесь метод append работает за константное время O(1).