合并两有序链表
递归
两链表合并时,要进行多次结点的比较,因此可用递归两个链表头部较小的操作结果进行比较。
/**
* 合并两个有序链表
* @param l1 有序链表1头结点
* @param l2 有序链表2头结点
* @return
*/
public static Node mergeTwoLists(Node l1, Node l2) {
if (l1 == null) {
return l2;
} else if (l2 == null) {
return l1;
} else if (l1.getObj() > l2.getObj()) {
mergeTwoLists(l1.getNext(),l2);
return l1;
}else {
mergeTwoLists(l1,l2.getNext());
return l2;
}
}
如果l1或l2为空,说明一开始就是空链表,直接返回非空结点,否则判断l1和l2链表哪一个的头结点的值的更小,然后递归决定下一个添加到链表里的结点,如果有一个为空,停止递归,