Mental Model
A doubly linked list has nodes connected both forward and backward. To add a new node at the end, we link it after the last node and update pointers.
Analogy: Imagine a train where each carriage is connected to the one before and after. Adding a new carriage at the end means hooking it to the last carriage and making sure both know about each other.
null ← 1 ↔ 2 ↔ 3 ↔ null
↑ tail