Singly Linked List — trực quan
Thao tác cơ bản
Đảo ngược pointer-by-pointer (bài 2 README)
Giữ 3 con trỏ prev / cur / next. Mỗi bước trỏ ngược cur.next về prev, rồi xê dịch các con trỏ.
Floyd "rùa và thỏ" — phát hiện chu trình (bài 4 README)
slow đi 1 bước, fast đi 2 bước. Có chu trình → gặp nhau. Không → fast chạm null.
LRU cache: doubly-linked list + map (README §8.1)
Trái = mới dùng nhất, phải = cũ nhất. Get/Put đưa key lên đầu;
khi đầy, key cuối bị evict. Mỗi thao tác O(1) nhờ doubly-linked (move/xóa node) + map (tìm node).
Put/Get để xem thứ tự dùng + eviction.