核心技能

  • null/nil 异常处理
  • dummy node 哑巴节点
  • 快慢指针
  • 插入一个节点到排序链表
  • 从一个链表中移除一个节点
  • 翻转链表
  • 合并两个链表
  • 找到链表的中间节点

哑巴节点

适用于头节点可能被删除的场景。
下面示例代码是哑巴节点用于删除头节点。


ListNode dummy_node = new ListNode(-1);

// head节点为头节点。
dummy_node.next = head;

dummy_node.next = head.next;

// 返回新的头节点
return dummy_node.next;

快慢指针

常用于寻找中间节点。
还可以用于判断链表是否有环。

    private ListNode findMiddle(ListNode head){
        // 采用快慢指针
        ListNode slow = head;
        ListNode fast = head.next;

        while (fast != null && fast.next != null){
            fast = fast.next.next;
            slow = slow.next;
        }

        return slow;
    }
最后修改:2020 年 07 月 15 日
如果觉得我的文章对你有用,请随意赞赏