合并两有序链表

合并两有序链表

递归

两链表合并时,要进行多次结点的比较,因此可用递归两个链表头部较小的操作结果进行比较。

/**
     * 合并两个有序链表
     * @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链表哪一个的头结点的值的更小,然后递归决定下一个添加到链表里的结点,如果有一个为空,停止递归,

原文地址:https://www.cnblogs.com/huangshen/p/13257699.html