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.