Junior — Middle
How is the insertion operation's time complexity in a doubly linked list determined?
sobes.tech AI
Answer from AI
The time complexity of inserting an element into a doubly linked list depends on whether we have a pointer to the insertion position:
- If a pointer to the node after which the element should be inserted already exists, then the insertion is performed in O(1), as it only requires changing a few pointers.
- If we need to first find the insertion position, the search time will depend on the size of the list (O(n)), and the insertion itself is O(1).
Example of inserting after a given node:
type Node struct {
value int
prev *Node
next *Node
}
func insertAfter(node *Node, newNode *Node) {
newNode.prev = node
newNode.next = node.next
if node.next != nil {
node.next.prev = newNode
}
node.next = newNode
}