






链表的创建、插入、删除节点等操作都只需要20行左右代码就能实现,代码量比较适合作为面试题。由于链表是一种动态数据结构,其操作是针对指针进行的,因此应聘者需要有较好的编程功底才能编写出正确的操作链表的代码。另外,链表这种数据结构很灵活,面试官可以用链表设计出具有挑战性的面试题
为了简化处理链表边界条件而引入的附加链表节点。哨兵节点通常位于链表头部,它的值没有任何意义。在一个有哨兵节点的链表中,从第2个节点开始才真正保存有意义的信息
输入的链表为空,或者操作可能会产生新的头节点——这些都是应聘者在面试时特别容易忽视的测试用例。如果合理应用哨兵节点,就不再需要单独处理这些特殊的输入,从而杜绝由于忘记处理这些特殊输入而出现Bug的可能性
双指针思路又可以根据两个指针不同的移动方式细分成两种不同方法。第1种方法是前后双指针,即一个指针在链表中提前朝着指向下一个节点的指针移动若干步,然后移动第2个指针。前后双指针的经典应用剑指 Offer 22. 链表中倒数第k个节点。先让第1个指针从链表头节点开始朝着指向下一个节点的指针先移动k-1步,然后让第2个指针指向链表的头节点,再让两个指针以相同速度一起移动,当第1个指针到达链表的尾节点时第2个指针正好指向倒数第k个节点
第2种方法是快慢双指针,通常快指针朝着指向下一个节点的指针一次移动2步,慢指针一次只移动1步。采用这种方法,在一个没有环的链表中,当快指针到达链表尾节点时慢指针正好指向链表中间节点。因此可以用来判断是否为环形链表141. 环形链表





古城算法.基础数据结构(五) —— 链表(上) 反转 + 合并 + 找环
古城算法.基础数据结构(五) —— 链表(下) 删除 + 复制 + 结构转换
何海涛.剑指Offer(专项突破版):数据结构与算法名企面试题精讲[M]
图灵星球Turing Planet.Linked List链表题型解题套路和模板【LeetCode刷题套路教程4】
