diff --git a/algorithm/03-data-structure.md b/algorithm/03-data-structure.md index f6608fc..624e367 100644 --- a/algorithm/03-data-structure.md +++ b/algorithm/03-data-structure.md @@ -22,6 +22,23 @@ function reverseList(head) { ### 环形链表判断 +**什么是环形链表?** +环形链表是指链表中某个节点的 `next` 指针指向了链表中之前的某个节点,从而形成一个闭环。遍历这种链表时会陷入无限循环,永远无法到达 `null`。 + +``` +正常链表: 1 -> 2 -> 3 -> 4 -> null +环形链表: 1 -> 2 -> 3 -> 4 + ↑ ↓ + └─────────┘ +``` + +**实际应用场景:** +- **内存泄漏检测**:对象间循环引用导致垃圾回收器无法回收,需要检测环 +- **死锁检测**:进程等待资源形成环形依赖时会发生死锁 +- **约瑟夫环问题**:n 个人围成一圈报数淘汰的经典算法问题 +- **循环播放列表**:音乐/视频循环播放时最后一项指向第一项 +- **游戏地图边界**:无缝世界地图从一端走到另一端 + ```js // 快慢指针法:如果有环,快指针一定会追上慢指针 function hasCycle(head) {