合并两个有序链表
题目
输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。
思路
递归实现: 合并过程中,每次都是从两个链表中找出较小的一个来链接,因此可以采用递归来实现:当任意一个链表为null时,直接连接另一个链表即可;其余情况只需要在两个链表中找出一个较小的节点进行连接,该节点的next值继续通过递归函数来链接。
非递归实现: 参考leetcode 21. Merge Two Sorted Lists 进行分类讨论即可。
测试用例
- 功能测试(两个链表有多个或一个节点;节点值相同、不同)
- 特殊测试(任意一个或者两个链表的头结点为null)
java代码
1 | /** |
总结
- 对于递归实现方法,得到链表中值叫次奥的头结点并把它连接到已经合并的链表之后,两个链表剩余的节点依然是排序的,因此合并的步骤和之前的步骤是一样的。这就是典型的递归过程,我们可以定义递归函数完成这一合并过程。